186400, 'index' => 86400 ); function _check_activities( $user_id ) { $a =$this->Activity->find('all',array('conditions' => array('user_id' => $user_id))); /* $aa = array(); foreach ($a as $activity){ $aa[$activity['Activity']['clazz']][$activity['Activity']['foreign_id']] = $activity['Activity']['count']; } */ //$this->set('activities_b', $aa); return $a; } function corner(){ $user_id = intval($this->Auth->user('id')); $voll_daten = ClassRegistry::init('Profile')->getVoll($user_id); $geos = ClassRegistry::init('Geo')->get_for_user($user_id); $educations = ClassRegistry::init('Education')->getAllForUser($user_id); $experiences = ClassRegistry::init('Experience')->get($user_id); $activities = $this->_check_activities( $user_id ); $this->set('activities', $activities); //$this->set('profile',$profile); //$this->set('groups',null); $this->set('educations',$educations); $this->set('geos',$geos); $this->set('voll_daten',$voll_daten); $this->set('experiences',$experiences); $this->elements_right = array('mymenu'=>array()); $this->pageTitle = 'Мой кабинет: редактирование моего профиля и управление коммуникацией с другими пользователями'; } function jump($controller,$action,$id,$token=null) { if(!is_numeric($id))$this->cakeError('error404'); App::import('Sanitize'); $token = explode(' ',$token); $token = $token[0]; $token = str_replace ("'",'',$token); $token = Sanitize::paranoid($token); $userData = $this->User->find(compact('id','token')); if( $userData != false ) { $this->Session->write('Auth',$userData); //$this->set_geo($this->User->getCityID($this->Auth->user('id'))); $this->User->updateAll(array('is_online'=> 1,'is_active'=>1,'updated'=>time()), array('User.id' => $userData['User']['id'])); $this->redirect('/'.$controller.'/'.$action); }else { $this->Session->setFlash('Данная ссылка устарела или неправильная.
Войдите пожалуйста на сайт используя Ваш email и пароль!'); $this->redirect('/users/login/'); } } function login(){ $this->keywords_for_layout ='поиск выпускников, поиск одногруппников,поиск земляков,выпускник,школа, училище, техникум, колледж, пту, институт, университет, вуз, одноклассник, одноклассница, cокурсник, однокурсник, студент, поиск одноклассников, бывший студент, бывший выпускник, сослуживец, встреча выпускников, поиск людей'; $this->description_for_layout=' Поиск людей по интересам, земляков, выпускников, одногруппников, одноклассников, сослуживцев | общения по интересам и деловых контактов '; $this->pageTitle = 'Вход на сайт общения по интересам и деловых контактов :: Поиск выпускников одноклассников одногруппников земляков | Общение в Вашем городе , школе , вузе.'; if ($this->Auth->user('id')){ $user_id = intval($this->Auth->user('id')); $this->User->updateAll(array('is_online'=> 1,'is_active'=>1,'updated'=>time()), array('User.id' => $user_id)); $this->redirect('/users/corner'); } $this->elements_right = array('info/home'=>array()); } function logout(){ $this->Session->setFlash('Досвидание! Спасибо за участие на нашем сайте! Рекомендуйте его Вашим знакомым!'); $user_id = intval($this->Auth->user('id')); $this->User->updateAll(array('is_online'=> 0,'updated'=>time()), array('User.id' => $user_id)); $this->redirect($this->Auth->logout()); } function register($inviter=null){ $this->pageTitle = 'Международный портал на русском языке последний звонок встреча выпускников бесплатно без регистрации '; $this->description_for_layout = 'бесплатная регистрация на сайте выпускников одногруппников'; $this->keywords_for_layout = 'выпускной,выпускной вечер,выпускной бал,последний звонок,встреча выпускников'; if ( !is_null($inviter) ) $this->Session->write('inviter',$inviter); if (!empty($this->data)) { if ( is_numeric($this->data['Geo']['city_id'])) { $this->data['User']['email'] = trim($this->data['User']['email']); $user_email = $this->data['User']['email']; $this->data['User']['password'] = trim($this->data['User']['password']); $activation_code = Security::hash(Configure::read('Security.salt') .time(). $user_email); $this->data['User']['token'] = $activation_code; //debug($this->data); uses('sanitize'); $sanitize = new Sanitize(); $this->data['User']['fname']= Sanitize::stripTags(Sanitize::stripScripts($this->data['User']['fname'])); if ($this->User->save($this->data)) { $this->Session->setFlash('Для полноценной работы на сайте Вам нужно подтвердить Ваш E-mail адрес.
На указанный e-mail '.$user_email.' мы выслали Вам письмо с ссылкой для активации!
Так как данный емаил был сгенерирован автоматически проверьте также спам папку!'); $this->User->bindModel(array('hasOne' => array('Geo','Profile'=>array('className'=>'Profile','foreignKey'=> 'id')))); $user_id = $this->User->id; $this->data['Profile']['id'] = $user_id; $this->data['Profile']['ip'] = $this->RequestHandler->getClientIP(); $this->User->Profile->save($this->data); $this->data['Geo']['user_id']=$user_id; $this->data['Geo']['type'] = 1; $this->User->Geo->save($this->data); ClassRegistry::init('Guest')->add($user_id,1000); $this->Activity->add(array( 'user_id' => $user_id, 'class' => 'Guest', 'foreign_id' => '1000')); $post_data['Post']['user1_id']=$user_id; $post_data['Post']['user_id']=1000; $post_data['Post']['message']='Добрый день! Поздравляем с успешной регистрацией на студ ай пи!'; if (ClassRegistry::init('Post')->save($post_data)) { $this->Activity->add(array( 'user_id' => $user_id,'class' => 'Post','foreign_id' => 1000) ); } $this->Email->from = Configure::read('Email.from'); $this->Email->to = $user_email; $this->Email->subject = 'Подтверждение регистрации на сайте'; $this->Email->template = 'register'; $this->Email->sendAs = 'html'; $this->set('activation_code',$activation_code); $this->Email->delivery = Configure::read('Email.delivery'); $this->Email->send(); $userData = $this->User->findById($user_id); $this->Session->write('Auth',$userData); $this->_invitation($user_id,$user_email); $this->redirect('/users/corner/'); } else { $this->data['User']['password'] = ''; } } else { $this->data['User']['password'] = ''; $this->Session->setFlash('Пожалуйста укажите правильно Ваше гео-положение :
Страну ,Регион и Город.'); } } $this->elements_right = array('info/register'=>array(),'infobox'=>array()); } function _invitation($user_id,$user_email) { // TODO add to ACTIVITY App::import('Model', 'Invitation'); $Invitation = new Invitation(); $invitation_id = $Invitation->field('id',array("email = '{$user_email}'")); if (is_numeric($invitation_id)) { $Invitation->updateAll( array('Invitation.user_id' => $user_id), array('Invitation.id' => $invitation_id)); } else if ($this->Session->check('inviter')) { $inviter_id = $this->Session->read('inviter'); $Invitation->speichern($user_id,$inviter_id); } } function view( $id=null ) { $user_id = intval($id); if(!is_numeric($user_id))$this->cakeError('error404'); $this->User->bindModel(array('hasOne' => array('Profile'=>array('className'=>'Profile','foreignKey'=> 'id')), 'hasMany' => array('Comment'=>array('conditions' => array('class' => 'User'),'foreignKey'=>'foreign_id'),'Geo'=>array('className'=>'Geo','order' => 'Geo.type desc')) )); $this->User->Profile->increment($user_id); $id = $this->Auth->user('id'); if ($user_id == $id) $this->Activity->del(array('user_id'=>$id,'class'=>'User')); $this->User->recursive = 2; $this->User->id = $user_id; $user = $this->User->read(); if(empty($user))$this->cakeError('error404'); $educations = ClassRegistry::init('Education')->getAllForUser($user_id); $all_uni = ''; if (!empty($educations['unis'])){ foreach ($educations['unis'] as $uni){ $all_uni .= $uni['Uni']['name'].' '.$uni['Uni']['shortname'].' '; } } $all_schools = ''; if (!empty($educations['schools'])){ foreach ($educations['schools'] as $school){ $all_schools .= $school['School']['name'].' '.$school['School']['City']['name'].','; } } $all_techschools = ''; if (!empty($educations['techschools'])){ foreach ($educations['techschools'] as $school){ $all_techschools .= $school['Techschool']['name'].' '.$school['Techschool']['City']['name'].','; } } $this->set('educations',$educations); $guest_id = $this->Auth->user('id'); //debug($guest_id); if (!is_null($guest_id) && $guest_id!=$user_id) { ClassRegistry::init('Guest')->add($user_id,$guest_id); $this->Activity->add(array( 'user_id' => $user_id, 'class' => 'Guest', 'foreign_id' => $guest_id )); } $experiences = ClassRegistry::init('Experience')->get($user_id); $this->set('experiences',$experiences); $this->set('family_options',$this->User->Profile->family_options); $this->set('children_options',$this->User->Profile->children_options); $this->set('height_options',array (155,160,165,170,175,180,185,190,200)); $this->set('status_options', $this->User->Profile->status_options); $user['User']['view_name'] = $user['User']['fname'].' '.$user['Profile']['fname_2'].' '.$user['User']['sname']; if (strlen($user['Profile']['sname_2']) > 3) $user['User']['view_name'] = $user['User']['view_name'].' ('.$user['Profile']['sname_2'].' '.$user['Profile']['sname_3'].')'; $this->elements_right = array('studmenu'=>array('entity'=>$user['User'])); $this->set('user',$user); $this->pageTitle = $user['User']['view_name'].' :: САЙТ ОДНОГРУППНИКИ ВЫПУСКНИКИ СОКУРСНИКИ'; $this->keywords_for_layout = $user['User']['view_name'].', '.$user['Geo'][0]['City']['name'].', '.$user['Geo'][0]['Region']['name'].', одногруппники, '.$user['Profile']['profession'].' выпускник '.$all_uni .' '.$all_schools; $this->description_for_layout = 'Персональная страница '.$user['User']['view_name'].' '.$user['User']['bdate'].' из '.$user['Geo'][0]['City']['name'].' '.$user['Geo'][0]['Region']['name'].' '.$user['Profile']['profession'].' выпускник '.$all_uni.' '.$all_schools.' ... а также поиск людей земляков выпускников одногруппников вузов институтов университетов.'; } function _check_new_posts() { $new_post_count = $this->Post->find('all',array( 'fields'=>array('count(Post.id)'), 'conditions' => array( 'user1_id' => intval($this->Auth->user('id')), 'is_read' =>0))); $this->new_post_count = $new_post_count[0][0]['count(`Post`.`id`)']; } function _last_login($b) { $user_id = intval($this->Auth->user('id')); $this->User->updateAll(array('is_online'=> $b,'updated'=>time()), array('User.id' => $user_id)); } function paginate( $page, $limit){ $options = array_merge($this->params, $this->params['url'], $this->passedArgs); $vars = array('fields', 'order', 'limit', 'page', 'recursive'); $keys = array_keys($options); $count = count($keys); for ($i = 0; $i < $count; $i++) { if (!in_array($keys[$i], $vars, true)) { unset($options[$keys[$i]]); } if (empty($whitelist) && ($keys[$i] === 'fields' || $keys[$i] === 'recursive')) { unset($options[$keys[$i]]); } elseif (!empty($whitelist) && !in_array($keys[$i], $whitelist)) { unset($options[$keys[$i]]); } } $count = 250; $pageCount = intval(ceil($count / $limit)); $paging = array( 'page' => $page, 'current' => $page, 'count' => $count, 'prevPage' => ($page > 1), 'nextPage' => ($count > ($page * $limit)), 'pageCount' => $pageCount, 'defaults' => array('limit' => $limit, 'step' => 1), 'options' => $options ); $this->params['paging']['User'] = $paging; return true; } function index() { if (isset($this->passedArgs['page']))$page = intval($this->passedArgs['page']); else $page = 1; $limit= 10; //$this->paginate['pageCount'] = $this->User->__paginateCount(); //$this->params['paging']['User']['pageCount'] = $this->User->__paginateCount(); $users = $this->User->get_user_for_list( $limit, $page ); $this->paginate( $page, $limit ); $this->set('users',$users); if (!isset($this->params['named']['page']))$this->params['named']['page']=1; $array_pageTitle = array( 'ОДНОКЛАССНИКИ', 'ВЫПУСКНИКИ', 'сайт одногруппников, одногруппники выпускники', 'сайт одноклассников, выпускники одноклассники', 'бесплатная регистрация на сайте одноклассников', 'альтернатива одноклассников выпускники', 'сайт однофамильцев, однофамильцы , поиск однофамильцев', 'сайт сокурсники, выпускник поиск сокурсников , сокурсник , сокурсница', 'сайт однокурсники, поиск однокурсников , однокурсник выпускник', 'сайт земляков, земляки, поиск земляков выпускники', 'переписка с одноклассниками выпускник', 'одноклассники выпускники одногруппники', 'новости сайта выпускники одноклассники', 'бывшие выпускники одноклассники выпускники одногруппники', 'сайты общения выпускники знакомства', 'форум одноклассников выпускницы форум выпускников', 'одноклассники в контакте', 'форум одногруппников сайт однофамильцев', 'поиск школьных друзей выпускники', 'выпускники поиск людей по интересам выпускники', 'выпускники одноклассники росиия', 'выпускники украины одноклассники', 'одноклассники белоруссии выпускники', 'одноклассники выпускники казахстана', 'одноклассники и одногруппники', 'социальная сеть одноклассников', 'русские одноклассники германия', 'русские одногруппники выпускники ', 'одноклассники заграницей выпускники', 'сайт земляков, земляки, встреча земляков, поиск земляков', 'земляки из советского союза', 'найдем тех кого мы знали раньше', 'поиск однокурсников одногруппников сокурсников', 'новые одноклассники :: мои одноклассники', 'однокурсники поиск :: однокурсники ру ::', 'поиск человека человека по фамилии :: тайна фамилии :: родословная фамилии', 'бесплатный поиск по фамилии :: фамилии список :: генеалогическое дерево :: енеологическое дерево ', 'однокурсники поиск :: однокурсники ру :: дерево фамилии', 'однокурсники поиск :: однокурсники ру :: дерево фамилии', 'бесплатные одноклассники :: мои одноклассники :: одноклассники регистрация :: одноклассники вход' , 'одноклассники моя страница :: моя страница бесплатно :: вконтакте', 'одноклассники :: в контакте :: мой мир :: ', 'рамблер знакомства', 'школа однокласники , однокласники сеть', 'однокласники соц сеть', 'поиск пользователей :: найти человека :: поисковая система rambler', 'поиск людей бесплатно без регистрации', 'поиск людей в интернете бесплатно', 'бесплатный сайт поиска людей', 'поиск людей бесплатно в германии', 'поиск людей контакте', 'русские заграницей', 'поиск одноклассников : одноклассники ru поиск одноклассников', 'одноклассники поиск бывших одноклассников', 'мой мир одноклассники поиск', 'Поиск людей, родственников, одноклассников :: Международный поиск, включая Россию', 'сайты поиска одноклассников :: поиск одноклассников бесплатно :: бесплатный поиск одноклассников', 'глобальная система поиска людей. В нашей системе поиск людей - бесплатно', 'значание имени', 'поиск по фамилии', 'встреча выпускников вузов', 'отличница фото', 'русские в германии', 'русская франция', 'русская италия', 'русская испания' ); if (isset ($array_pageTitle[$this->params['named']['page']])) { $this->pageTitle = $array_pageTitle[$this->params['named']['page']]; } else { $this->pageTitle = 'поиск людей, земляков, выпускников, одногруппников, одноклассников страница '.$this->params['named']['page']; } $this->keywords_for_layout = 'сослуживцы, иммигранты, выпускник, выпускницы, студент, студентки, земляк, земляки , поиск людей, однофамильцы'; $this->description_for_layout = 'поиск людей по интересам, деловых контактов, земляков, выпускников, одноклассников, одногруппников '; $this->elements_right = array( 'infobox'=>array(),'menu/left_menu'=>array(), 'advertising/banner'=>array(), 'advertising/ad_adaptivnyj'=>array() ); } function foto() { if (!empty($this->data)) { $image_path = $this->Image->upload_image_and_thumbnail($this->data,200,80,'users',true); if (strlen($image_path) > 9) { $user_id = $this->Auth->user('id'); $this->User->id = $user_id ; $this->data['User']['img']=$image_path; if ($this->User->save($this->data)) { $this->Session->setFlash('Фото добавлено'); $this->Session->write('Auth.User.img', $image_path); ClassRegistry::init('Profile')->setVoll( $user_id ); $this->redirect(array('action' => 'foto')); }else {$this->Session->setFlash('Please correct errors below!');} }else { $this->Session->setFlash('Фото не добавлено : код ошибки!'.$image_path); $this->redirect(array('action' => 'foto')); } } else { $this->User->id = $this->Auth->user('id'); $this->data = $this->User->read(); } $this->elements_right = array('mymenu'=>array()); } function del_foto($img) { $this->Image->delete_image($img,'users'); $this->User->id = $this->Auth->user('id'); $this->data['User']['img'] = ''; if ($this->User->save($this->data)) { $this->Session->write('Auth.User.img', null); $this->Session->setFlash('Фото удалено'); } $this->redirect(array('action' => 'foto')); } function search() { if (!empty($this->data)){ $data['sname'] = preg_replace("[^Z-Aa-z]",'',$this->data['User']['sname'] ); $data['fname'] = preg_replace("[^Z-Aa-z]",'',$this->data['User']['fname'] ); $data['country_id'] = intval ($this->data['Geo']['country_id']); $data['user_id'] = is_null($this->Auth->user('id'))? 0 : $this->Auth->user('id') ; $users = $this->User->search($data); $this->set('users',$users); $this->set('search_user',$data['sname'].'+'.$data['fname']); } $this->pageTitle = 'Поиск людей без регистрации бесплатно одногруппники встреча выпускники'; $this->keywords_for_layout = 'найти человека,ищу людей,поиск одноклассников,поиск родственника , поиск однокашников'; $this->description_for_layout = 'найти человека,ищу людей,поиск одноклассников,поиск родственника'; $this->set('kogo_iskali',$this->User->kogo_iskali()); $this->elements_right = array('info/city'=>array(),'infobox'=>array(),'menu/left_menu'=>array(),'advertising/banner'=>array()); } function alphabetically($a = null){ $cond = array(); if (!is_null($a)) { $a = trim(preg_replace ('/\[^\pL]/u','',$a)); $cond = array('OR'=>array('User.fname LIKE' => $a.'%','User.sname LIKE' => $a.'%')); } if (isset($this->passedArgs['page']))$page = intval($this->passedArgs['page']); else $page = 1; $limit= 10; $start = ($page-1)*$limit; $users = $this->User->find('all',array('conditions' =>$cond, 'limit' => $start.','.$limit)); $this->paginate( $page, $limit ); $this->set('users',$users); $this->pageTitle = 'поиск людей по фамилиям или именам в алфавитном порядке'; $this->elements_right = array('infobox'=>array(),'menu/left_menu'=>array()); } function activate($token=null) { if (!$token) { $this->set('result', 'no_token'); } else { App::import('Sanitize'); $token = Sanitize::paranoid($token); $user = $this->User->findByToken($token); if (!empty($user)) { //$user['User']['token'] = null; $user['User']['is_active'] = 1; $user['User']['updated'] = time(); //$this->User->updateAll(array('is_online'=> 1,'is_active'=>1,'updated'=>time()), array('User.id' => $user_id)); if ($this->User->save($user, false)) { $this->set('result', 'user_active'); $this->Session->write('Auth',$user); $this->Session->setFlash('Поздравляем! Ваш емаил был подтвержден!'); $this->redirect('/users/corner/'); } else { $this->set('result', 'error'); } } else { $this->set('result', 'unknown_token'); } } $this->pageTitle = 'подтверждения email адреса'; } function forget() { $this->pageTitle = 'Восстановление забытого пароля. Шаг 1.'; if (!empty($this->data)) { $this->recursive = -1; //,'is_active'=>1 App::import('Sanitize'); $email = Sanitize::paranoid($this->data['User']['email'], array('.','-','_','@')); if ($user = $this->User->findByEmail($email)) { $this->User->id = $user['User']['id']; $this->Email->from = Configure::read('Email.from'); $this->Email->to = $user['User']['email']; $this->Email->subject = 'востановление пароля'; $this->Email->template = 'forget'; $this->Email->sendAs = 'html'; $this->Email->delivery = Configure::read('Email.delivery'); $activation_code = Security::hash(microtime(). $this->data['User']['email']); $this->set('name', $user['User']['name']); $this->set('activation_code', $activation_code); $user['User']['token']= $activation_code; $this->User->saveField('token', $activation_code); if ($this->Email->send()) { $this->Session->setFlash('Запрос на восстановления пароля успешно отправлен.
Проверьте ваш емаил: '.$user['User']['email']); } else { $this->Session->setFlash('Error resetting password. Contact Administrator'); } $this->redirect('/'); } else { $this->Session->setFlash('Пользователь с указанным Email среди активизированных профилей не был найден.
Повторите попытку или зарегистрируйтесь и активизируйте ваш емаил, если Вы не сделали этого раньше.'); } } } function reset_pwd($token=null) { $this->pageTitle = 'Восстановление забытого пароля. Шаг 2.'; if (!empty($this->data)) { App::import('Sanitize'); $token = Sanitize::paranoid($token); $user = $this->User->findByToken($this->data['User']['token']); if (!empty($user)) { //$user['User']['token'] = null;// if ($this->User->saveField('token', $user['User']['token'], false)) $user['User']['password'] = Sanitize::paranoid($this->data['User']['password']);// $this->Auth->password( // Ваш новый пароль сейчас:'.$this->data['User']['password'].' '.$user['User']['password'] if ($this->User->save($user)) { $this->Session->setFlash('Пароль был успешно изменён.
'); $this->redirect('/users/login'); } else { $this->set('result', 'error'); } } } else { if ($token!=null){ $this->set('token', $token); } else { $this->cakeError('error404', array($this->params['url'])); } } } } array('className' => 'Geo', 'conditions' => array('Geo.type' => '1')) ); */ var $validate = array( 'email' => array('mail' => array( 'rule' => array('email', true), 'allowEmpty' => false, 'message' => 'Проверьте правильность Email!'), 'unique' => array( 'rule' => 'isUnique', 'message' => 'В базе данных уже существует пользователь с таким Email.Eсли Вы уже регистрировались, но забыли пароль - воспользуйтесь функцией "забыли пароль".')), 'fname' => array( 'between' => array( 'rule' => array('between', 2, 25), 'message' => 'Пожалуйста укажите имя')), 'gender' => array( 'rule' => array('comparison', '>', 0), 'message' => 'Вы мужчина или женщина ?'), ); private function array_normalise( $array, $class ) { $array_temp = array(); foreach ($array as $element){ $array_temp[$class][] = $element[$class]; } return $array_temp; } function get_user_for_list($limit, $page){ $start = ($page-1)*$limit; $sql = 'SELECT `User`.`id`,`User`.`fname`, `User`.`sname`,`User`.`gender`,`User`.`img`, `Profile`.`profession`,`Profile`.`title`, `City`.`name`, `Education`.`year_end`, `School`.`id`,`School`.`name`, `Uni`.`id`, `Uni`.`name` FROM `users` AS `User` LEFT JOIN profiles AS `Profile` ON ( `User`.`id` = `Profile`.`id`) LEFT JOIN `geos` AS `Geo` ON ( `User`.`id` = `Geo`.`user_id`) LEFT JOIN `cities` AS `City` ON (`Geo`.`city_id` = `City`.`id`) LEFT JOIN `educations` AS `Education` ON (`User`.`id` = `Education`.`user_id`) LEFT JOIN `schools` AS `School` ON ( `Education`.`type` = 1 AND `Education`.`school_id` = `School`.`id` ) LEFT JOIN `unis` AS `Uni` ON ( `Education`.`type` = 3 AND `Education`.`school_id` = `Uni`.`id` ) WHERE `User`.`img` <> "" GROUP BY `User`.`id` ORDER BY `User`.`updated` desc LIMIT '.$start.','.$limit; return $this->query( $sql ); } function __paginate( $conditions, $fields, $order, $limit , $page = 1) { return $this->get_user_for_list($limit, $page); } function __paginateCount() { $sql = 'SELECT count(id) c FROM users WHERE img <> ""'; $r = $this->query($sql); return $r[0][0]['c']; } function get_all_gropus_name($user_id){ $sql = 'SELECT `Group`.`id`, `Group`.`name` FROM `groups_users` AS `GroupsUser` LEFT JOIN `groups` AS `Group` ON (`GroupsUser`.`group_id` = `Group`.`id`) WHERE `GroupsUser`.`user_id` = '.$user_id.' AND `GroupsUser`.`accept` = 1'; $groups = $this->query( $sql ); $groups = $this->array_normalise($groups, 'Group'); $sql = 'SELECT `City`.`id`, `City`.`name` FROM `geos` AS `Geo` LEFT JOIN `cities` AS `City` ON (`Geo`.`city_id` = `City`.`id`) WHERE user_id ='.$user_id; $cities = $this->query( $sql ); $cities = $this->array_normalise($cities, 'City'); $sql = 'SELECT `Uni`.`id`,`Uni`.`shortname`,`Uni`.`name` FROM `educations` AS `Education` LEFT JOIN `unis` AS `Uni` ON (`Education`.`school_id` = `Uni`.`id`) WHERE user_id = '.$user_id.' and type = 3'; $unis = $this->query( $sql ); $unis = $this->array_normalise($unis, 'Uni'); $sql = 'SELECT `School`.`id`,`School`.`name` FROM `educations` AS `Education` LEFT JOIN `schools` AS `School` ON (`Education`.`school_id` = `School`.`id`) WHERE user_id = '.$user_id.' and type = 1'; $schools = $this->query( $sql ); $schools = $this->array_normalise($schools, 'School'); // TODO tschools return array_merge($groups, $cities, $unis, $schools); } function get($id = null){ $this->id = $id; return $this->read(); } function search($data){ $sql = 'SELECT DISTINCT User.id, User.created, User.fname, User.sname, User.img, User.is_online, City.name from users User,cities City,geos where User.sname LIKE "%'.$data['sname'].'%" AND User.fname LIKE "%'.$data['fname'].'%" AND User.id = geos.user_id AND geos.type = 1 AND geos.city_id = City.id'; if ($data['country_id'] > 0) $sql .= ' AND geos.country_id = '.$data['country_id']; $sql .= ' limit 0,20 '; $this->query('INSERT INTO users_search(user_id,name,created ) values('.$data['user_id'].',"'.$data['sname'].','.$data['fname'].'",now())'); return $this->query( $sql ); } function kogo_iskali(){ return $this->query('select name from users_search order by id desc limit 0,100'); } function getCityID($id = null){ $city_id = $this->query("select city_id from geos where user_id = $id AND type = 1 "); //debug($city_id); return $city_id[0]['geos']['city_id']; } function get_latest($limit=5) { //$this->recursive = -1; $this->Behaviors->attach('Containable'); $this->bindModel(array('hasOne' => array('Geo'))); $this->Geo->bindModel(array('belongsTo' => array('City'))); //$this->Geo->bindModel(array('belongsTo' => array('Country')));'is_active = 1', $users = $this->find('all',array( 'order'=>array( 'User.id' => 'desc'), 'limit' => $limit, 'recursive' => 2, 'fields'=> array('User.id','created','fname','sname','img','is_online'), 'conditions' => array('img <> ""'), 'contain'=>array( 'Geo'=>array('conditions'=> array('type'=>1),'fields'=>array('Geo.id')), 'Geo.City'=>array('conditions'=> array(''),'fields'=>'name')) )); return $users; } function get_best($limit=5) { //$this->recursive = -1; $this->Behaviors->attach('Containable'); $this->bindModel(array('hasOne' => array('Profile'=>array('className'=>'Profile','foreignKey'=> 'id')))); $this->bindModel(array('hasOne' => array('Geo'))); $this->Geo->bindModel(array('belongsTo' => array('City'))); //$this->Geo->bindModel(array('belongsTo' => array('Country')));'is_active = 1', $users = $this->find('all',array( 'order'=> 'RAND()', 'limit' => $limit, 'recursive' => 2, 'fields'=> array('id','created','fname','sname','img','is_online'), 'conditions' => array('img <> ""','Profile.count_views > ' => 120), 'contain'=>array( 'Profile'=>array(), 'Geo'=>array('conditions'=> array('type'=>1),'fields'=>array('Geo.id')), 'Geo.City'=>array('conditions'=> array(''),'fields'=>'name')) )); return $users; } function look_too($user_id){ $query = 'SELECT DISTINCT user_id FROM guests WHERE guest_id IN (SELECT guest_id FROM guests WHERE user_id ='.$user_id.') limit 0,5'; return $this->query($query); } function what_is_empty($user_id) { return $this->query("select count(id) c from educations where user_id = $user_id AND type = 1"); } }