示例#1
0
文件: Users.php 项目: noikiy/amatteur
 public static function create($data)
 {
     $db = JO_Db::getDefaultAdapter();
     $rows = self::describeTable('users');
     $date_added = WM_Date::format(time(), 'yy-mm-dd H:i:s');
     $data['date_added'] = $date_added;
     $data['status'] = 1;
     $data['last_action_datetime'] = $date_added;
     $data['ip_address'] = JO_Request_Server::encode_ip(JO_Request::getInstance()->getClientIp());
     $insert = array();
     $avatar = '';
     foreach ($rows as $row) {
         if (array_key_exists($row, $data)) {
             if ($row == 'avatar') {
                 if ($data[$row]) {
                     $avatar = $data[$row];
                 } else {
                     //$insert[$row] = $data[$row];
                 }
             } elseif ($row == 'password') {
                 $insert[$row] = md5($data[$row]);
             } elseif ($row == 'location') {
                 if ($data[$row] != "Introduce tu ubicación") {
                     $insert[$row] = $data[$row];
                 }
             } elseif ($row == 'firstname') {
                 $insert[$row] = self::quotesFix($data[$row]);
             } elseif ($row == 'description') {
                 $insert[$row] = self::quotesFix($data[$row]);
             } else {
                 $insert[$row] = $data[$row];
             }
         }
     }
     if (!$insert) {
         return false;
     }
     $insert['new_email'] = $insert['email'];
     $insert['store'] = JO_Registry::get('default_upload_method');
     if (!$insert['store']) {
         $insert['store'] = 'locale';
     }
     $db->insert('users', $insert);
     $user_id = $db->lastInsertId();
     if (!$user_id) {
         return false;
     }
     if ($avatar) {
         ///// upload images
         $front = JO_Front::getInstance();
         $request = JO_Request::getInstance();
         $upload_model = Helper_Pin::formatUploadModule(JO_Registry::get('default_upload_method'));
         $upload_model_file = $front->getModuleDirectoryWithDefault($request->getModule()) . '/' . $front->classToFilename($upload_model);
         if (!file_exists($upload_model_file)) {
             $upload_model = Helper_Pin::formatUploadModule('locale');
             $upload_model_file = $front->getModuleDirectoryWithDefault($request->getModule()) . '/' . $front->classToFilename($upload_model);
         }
         $image = false;
         if (file_exists($upload_model_file)) {
             $image = call_user_func(array($upload_model, 'uploadUserAvatar'), $avatar, $user_id);
         }
         if ($image) {
             $db->update('users', array('avatar' => $image['image'], 'store' => $image['store'], 'height' => $image['height'], 'width' => $image['width']), array('user_id = ?' => (string) $user_id));
         }
     }
     $db->insert('url_alias', array('query' => 'user_id=' . (string) $user_id, 'keyword' => $data['username'], 'path' => $data['username'], 'route' => 'users/profile'));
     $total_boards = 0;
     if (is_array(JO_Registry::forceGet('default_boards'))) {
         foreach (JO_Registry::get('default_boards') as $def) {
             $res = Model_Boards::createBoard(array('category_id' => $def['category_id'], 'title' => $def['title'], 'user_id' => (string) $user_id));
             if ($res) {
                 $total_boards++;
             }
         }
         $db->update('users', array('boards' => $total_boards), array('user_id = ?' => (string) $user_id));
     }
     if (isset($data['delete_email']) && $data['delete_email']) {
         $db->delete('shared_content', array('email = ?' => $data['delete_email']));
     }
     if (isset($data['delete_code']) && $data['delete_code']) {
         $db->delete('invate_facebook', array('if_id = ?' => (string) $data['delete_code']));
     }
     if (isset($data['following_user']) && $data['following_user'] && $data['following_user'] != -1) {
         if ($db->insert('users_following_user', array('user_id' => (string) $user_id, 'following_id' => (string) $data['following_user']))) {
             /*$db->update('users', array(
             			'following' => new JO_Db_Expr('following+1')
             		), array('user_id = ?' => (string)$user_id));
             		$db->update('users', array(
             			'followers' => new JO_Db_Expr('followers+1')
             		), array('user_id = ?' => (string)$data['following_user']));*/
         }
         if ($db->insert('users_following_user', array('user_id' => (string) $data['following_user'], 'following_id' => (string) $user_id))) {
             /*$db->update('users', array(
             			'following' => new JO_Db_Expr('following+1')
             		), array('user_id = ?' => (string)$data['following_user']));
             		$db->update('users', array(
             			'followers' => new JO_Db_Expr('followers+1')
             		), array('user_id = ?' => (string)$user_id));*/
         }
     }
     $db->update('users', array('boards' => new JO_Db_Expr('(SELECT COUNT(DISTINCT board_id) FROM boards WHERE user_id = users.user_id)'), 'following' => new JO_Db_Expr('(SELECT COUNT(DISTINCT following_id) FROM users_following_user WHERE user_id = users.user_id AND following_id != users.user_id)'), 'followers' => new JO_Db_Expr('(SELECT COUNT(DISTINCT user_id) FROM users_following_user WHERE following_id = users.user_id AND user_id != users.user_id)')), array('user_id = ?' => (string) $user_id));
     if (isset($data['facebook_session']) && $data['facebook_session']) {
         $db->update('users', array('facebook_session' => is_array($data['facebook_session']) ? serialize($data['facebook_session']) : ''), array('user_id = ?' => (string) $user_id));
     }
     return $user_id;
 }
示例#2
0
 public function createAction()
 {
     $request = $this->getRequest();
     //		if(!$request->isXmlHttpRequest()) {
     //			$this->forward('error', 'error404');
     //		}
     if ($request->isPost()) {
         if (JO_Session::get('user[user_id]')) {
             if (trim($request->getPost('newboard'))) {
                 if (trim($request->getPost('newboard')) != $this->translate('Nombre de la carpeta') && trim($request->getPost('newboard')) != $this->translate('Create New Board')) {
                     if (trim($request->getPost('category_id'))) {
                         $data = Model_Boards::createBoard(array('title' => trim($request->getPost('newboard')), 'category_id' => $request->getPost('category_id'), 'friends' => $request->getPost('friends')));
                         if ($data) {
                             if (is_array($request->getPost('friends'))) {
                                 foreach ($request->getPost('friends') as $fr) {
                                     $this->view->uinfo = Model_Users::getUser($fr);
                                     $this->view->board_href = $data['href'] = WM_Router::create($request->getBaseUrl() . '?controller=boards&action=view&user_id=' . JO_Session::get('user[user_id]') . '&board_id=' . $data['board_id']);
                                     $this->view->board_name = trim($request->getPost('newboard'));
                                     $this->view->author_href = $data['href'] = WM_Router::create($request->getBaseUrl() . '?controller=users&action=profile&user_id=' . JO_Session::get('user[user_id]'));
                                     $this->view->author_name = JO_Session::get('firstname') . ' ' . JO_Session::get('lastname');
                                     //                                print_R(JO_Session::getAll());
                                     $result = Model_Email::send($this->view->uinfo['email'], JO_Registry::get('noreply_mail'), $this->translate('You have been invited to pin on ' . trim($request->getPost('newboard'))), $this->view->render('board_invite', 'mail'));
                                 }
                             }
                             Model_History::addHistory(0, Model_History::ADDBOARD, 0, $data['board_id']);
                             $data['href'] = WM_Router::create($request->getBaseUrl() . '?controller=boards&action=view&user_id=' . JO_Session::get('user[user_id]') . '&board_id=' . $data['board_id']);
                             $this->view->data = $data;
                         } else {
                             $this->view->error = $this->translate('There was a problem with the record. Please try again!');
                         }
                     } else {
                         $this->view->error = $this->translate('Debe seleccionar una categoría para la carpeta');
                     }
                 } else {
                     $this->view->error = $this->translate('Board name must not be empty!');
                 }
             } else {
                 $this->view->error = $this->translate('Board name must not be empty!');
             }
         } else {
             $this->view->error = 'error login';
         }
         echo $this->renderScript('json');
     } else {
         $avatar = Helper_Uploadimages::avatar(JO_Session::get('user'), '_A');
         $this->view->avatar = $avatar['image'];
         $this->view->fullname = JO_Session::get('user[fullname]');
         $this->view->userhref = WM_Router::create($request->getBaseUrl() . '?controller=users&action=profile&user_id=' . JO_Session::get('user[user_id]'));
         $this->view->friends_href = WM_Router::create($request->getBaseUrl() . '?controller=users&action=friends');
         $this->view->form_action = WM_Router::create($request->getBaseUrl() . '?controller=boards&action=create');
         //////////// Categories ////////////
         $this->view->categories = array();
         $categories = Model_Categories::getCategories(array('filter_status' => 1));
         foreach ($categories as $category) {
             $category['subcategories'] = Model_Categories::getSubcategories($category['category_id']);
             $this->view->categories[] = $category;
         }
         $this->view->popup_main_box = $this->view->render('popup_form', 'boards');
         $this->setViewChange('form');
         if ($request->isXmlHttpRequest()) {
             $this->view->popup = true;
             echo $this->view->popup_main_box;
             $this->noViewRenderer(true);
         } else {
             $this->view->children = array('header_part' => 'layout/header_part', 'footer_part' => 'layout/footer_part', 'left_part' => 'layout/left_part');
         }
     }
 }