Exemplo n.º 1
0
 function index()
 {
     if (!$this->safety->allowByControllerName(__CLASS__)) {
         return errorForbidden();
     }
     $this->load->view('pageHtml', array('view' => 'process', 'meta' => array('title' => lang('Process'))));
 }
Exemplo n.º 2
0
 function index()
 {
     if (!$this->safety->allowByControllerName('about')) {
         return errorForbidden();
     }
     $this->load->view('pageHtml', array('view' => 'about', 'meta' => array('title' => lang('About of cloneReader')), 'code' => true));
 }
Exemplo n.º 3
0
 function delete()
 {
     if (!$this->safety->allowByControllerName(__CLASS__ . '/edit')) {
         return errorForbidden();
     }
     return loadViewAjax($this->News_Model->delete($this->input->post('newId')));
 }
Exemplo n.º 4
0
 function register()
 {
     if (!$this->safety->allowByControllerName('register')) {
         return errorForbidden();
     }
     $userId = $this->session->userdata('userId');
     $form = array('frmName' => 'frmRegister', 'buttons' => array('<button type="submit" class="btn btn-primary"><i class="fa fa-sign-in"></i> ' . lang('Register') . '</button>'), 'fields' => array('userEmail' => array('type' => 'text', 'label' => lang('Email')), 'userPassword' => array('type' => 'password', 'label' => lang('Password')), 'userFirstName' => array('type' => 'text', 'label' => lang('First name')), 'userLastName' => array('type' => 'text', 'label' => lang('Last name')), 'countryId' => array('type' => 'dropdown', 'label' => lang('Country'), 'appendNullOption' => true)));
     $form['rules'] = array(array('field' => 'userEmail', 'label' => $form['fields']['userEmail']['label'], 'rules' => 'trim|required|valid_email|callback__validate_exitsEmail'), array('field' => 'userFirstName', 'label' => $form['fields']['userFirstName']['label'], 'rules' => 'trim|required'), array('field' => 'userLastName', 'label' => $form['fields']['userLastName']['label'], 'rules' => 'trim|required'));
     $this->form_validation->set_rules($form['rules']);
     if ($this->input->post() != false) {
         $code = $this->form_validation->run();
         if ($code == true) {
             $this->Users_Model->register($userId, $this->input->post());
             $userEmail = $this->input->post('userEmail');
             if ($this->safety->login($this->input->post('userEmail'), $this->input->post('userPassword')) != true) {
                 return loadViewAjax(false);
             }
             $userId = $this->session->userdata('userId');
             $confirmEmailKey = random_string('alnum', 20);
             $this->Users_Model->updateConfirmEmailKey($userId, $userEmail, $confirmEmailKey);
             $this->Tasks_Model->addTask('sendEmailWelcome', array('userId' => $userId));
             $this->load->model('Entries_Model');
             $this->Entries_Model->addDefaultFeeds();
             return loadViewAjax($code, array('goToUrl' => base_url(), 'skipAppLink' => true));
         }
         return loadViewAjax($code);
     }
     $form['fields']['countryId']['source'] = $this->Countries_Model->selectToDropdown();
     $this->load->view('pageHtml', array('view' => 'includes/crForm', 'meta' => array('title' => lang('Signup')), 'form' => populateCrForm($form, array())));
 }
Exemplo n.º 5
0
 function deletePicture($entityTypeId, $fileId)
 {
     $config = getEntityGalleryConfig($entityTypeId);
     if (!$this->safety->allowByControllerName($config['controller'])) {
         return errorForbidden();
     }
     if ($this->Files_Model->hasFileIdInEntityTypeId($entityTypeId, $fileId) == false) {
         return errorForbidden();
     }
     $this->Files_Model->deleteEntityFile($entityTypeId, $fileId);
     return loadViewAjax(true, array());
 }
Exemplo n.º 6
0
 function listing()
 {
     if (!$this->safety->allowByControllerName(__METHOD__)) {
         return errorForbidden();
     }
     $page = (int) $this->input->get('page');
     if ($page == 0) {
         $page = 1;
     }
     $this->load->model('Tasks_Status_Model');
     $filters = array('search' => $this->input->get('search'), 'taskRunning' => $this->input->get('taskRunning') === false ? null : $this->input->get('taskRunning'));
     $orders = array(array('orderBy' => $this->input->get('orderBy'), 'orderDir' => $this->input->get('orderDir')));
     $query = $this->Tasks_Model->selectToList($page, config_item('pageSize'), $filters, $orders);
     $this->load->view('pageHtml', array('view' => 'includes/crList', 'meta' => array('title' => lang('Edit tasks')), 'list' => array('urlList' => strtolower(__CLASS__) . '/listing', 'readOnly' => true, 'columns' => array('taskMethod' => lang('Method'), 'taskParams' => array('value' => lang('Params'), 'class' => 'dotdotdot'), 'statusTaskName' => lang('Running'), 'langName' => lang('Language'), 'taskRetries' => lang('Retries'), 'taskSchedule' => array('value' => lang('Schedule date'), 'class' => 'datetime')), 'data' => $query['data'], 'foundRows' => $query['foundRows'], 'showId' => true, 'filters' => array('taskRunning' => array('type' => 'dropdown', 'label' => lang('Status'), 'value' => $this->input->get('taskRunning'), 'source' => $this->Tasks_Status_Model->selectToDropdown(), 'appendNullOption' => true)), 'sort' => array('taskId' => lang('#'), 'taskMethod' => lang('Method'), 'taskSchedule' => lang('Schedule date')))));
 }
Exemplo n.º 7
0
 function saveEntitySef($entityTypeId, $entityId)
 {
     $entityConfig = getEntityConfig($entityTypeId);
     $controller = sprintf('%s/edit', $entityConfig['entityTypeName']);
     // TODO: hacer un config
     if (!$this->safety->allowByControllerName($controller)) {
         return errorForbidden();
     }
     $entitySef = $this->Commond_Model->saveEntitySef($entityTypeId, $entityId);
     if ($entitySef == null) {
         return error404();
     }
     $entityUrl = getEntityUrl($entityTypeId, $entitySef);
     return loadViewAjax(true, array('entityUrl' => $entityUrl));
 }
Exemplo n.º 8
0
 function friends()
 {
     if ($this->session->userdata('userId') == USER_ANONYMOUS) {
         return errorForbidden();
     }
     // FIXME: chapuza; hacer que los fields typeahead permitan agregar datos y validarlos
     // Si el item que ingreso el usuario es un mail valido, lo apendeo a los resultados del autocomplete para que pueda seleccionarlo!
     $this->load->helper('email');
     $this->load->model('Users_Model');
     $query = $this->input->get('query');
     $result = $this->Users_Model->searchFriends($query, $this->session->userdata('userId'));
     if (valid_email($query) == true) {
         $result[] = array('id' => $query, 'text' => $query);
     }
     return $this->load->view('json', array('result' => $result));
 }
Exemplo n.º 9
0
 function keyboardShortcut()
 {
     if (!$this->safety->allowByControllerName(__METHOD__)) {
         return errorForbidden();
     }
     $aKeys = array('j' => 'Next item', 'k' => 'Previous item', 'u' => 'Maximize entries', 's' => 'Mark item as star', 'm' => 'Mark item as unread', 'v' => 'View original', 'r' => 'Reload', 'a' => 'Add feed', 'e' => 'Send entry by email', '1' => 'Detail view', '2' => 'List view');
     $html = '<ul class="list-group">';
     foreach ($aKeys as $key => $value) {
         $html .= '<li class="list-group-item"> <span class="label label-success">' . $key . '</span> ' . lang($value) . ' </li> ';
     }
     $html .= '</ul>';
     $form = array('frmName' => 'frmKeyboardShortcut', 'title' => lang('Keyboard shortcut'), 'icon' => 'fa fa-keyboard-o', 'buttons' => array(), 'fields' => array('keyboardShortcut' => array('type' => 'html', 'value' => $html)));
     if ($this->input->is_ajax_request()) {
         return $this->load->view('includes/crJsonForm', array('form' => $form));
     }
     $this->load->view('pageHtml', array('view' => 'includes/crForm', 'form' => $form, 'title' => lang('Keyboard shortcut'), 'code' => true));
 }
Exemplo n.º 10
0
 function logs()
 {
     if (!$this->safety->allowByControllerName(__METHOD__)) {
         return errorForbidden();
     }
     $page = (int) $this->input->get('page');
     if ($page == 0) {
         $page = 1;
     }
     $user = null;
     $userId = $this->input->get('userId');
     if ($userId != null) {
         $user = $this->Users_Model->get($userId);
     }
     $filters = array('search' => $this->input->get('search'), 'userId' => $userId);
     $query = $this->Users_Model->selectUsersLogsToList($page, config_item('pageSize'), $filters, array(array('orderBy' => $this->input->get('orderBy'), 'orderDir' => $this->input->get('orderDir'))));
     $this->load->view('pageHtml', array('view' => 'includes/crList', 'meta' => array('title' => lang('User logs')), 'list' => array('urlList' => 'users/logs', 'readOnly' => true, 'columns' => array('userEmail' => lang('Email'), 'userFullName' => lang('Name'), 'userLogDate' => array('class' => 'date', 'value' => lang('Date'))), 'data' => $query['data'], 'foundRows' => $query['foundRows'], 'showId' => true, 'filters' => array('userId' => array('type' => 'typeahead', 'label' => lang('User'), 'source' => base_url('search/users/'), 'value' => array('id' => element('userId', $user), 'text' => element('userFirstName', $user) . ' ' . element('userLastName', $user)), 'multiple' => false, 'placeholder' => lang('User'))), 'sort' => array('userId' => '#', 'userLogDate' => lang('Date')))));
 }
Exemplo n.º 11
0
 function doImportStarred()
 {
     if (!$this->safety->allowByControllerName('import/starred')) {
         return errorForbidden();
     }
     set_time_limit(0);
     $this->load->model('Entries_Model');
     $userId = $this->session->userdata('userId');
     $config = array('upload_path' => './application/cache', 'allowed_types' => 'json', 'max_size' => 1024 * 8, 'encrypt_name' => false, 'is_image' => false, 'overwrite' => true, 'file_name' => 'import_starred_' . $userId . '.json');
     $this->load->library('upload', $config);
     if (!$this->upload->do_upload()) {
         return loadViewAjax(false, $this->upload->display_errors());
     }
     $this->db->trans_start();
     $fileName = './application/cache/import_starred_' . $userId . '.json';
     $json = (array) json_decode(file_get_contents($fileName), true);
     foreach ($json['items'] as $data) {
         $entryContent = '';
         if (element('summary', $data) != null) {
             $entryContent = $data['summary']['content'];
         } else {
             if (element('content', $data) != null) {
                 $entryContent = $data['content']['content'];
             }
         }
         $entry = array('entryTitle' => element('title', $data, '(title unknown)'), 'entryUrl' => (string) $data['alternate'][0]['href'], 'entryAuthor' => element('author', $data, null), 'entryDate' => date('Y-m-d H:i:s', $data['published']), 'entryContent' => (string) $entryContent);
         $feed = array('feedName' => element('title', $data['origin']), 'feedUrl' => substr($data['origin']['streamId'], 5), 'feedLink' => $data['origin']['htmlUrl'], 'feedName' => element('title', $data['origin']), 'feedSuggest' => true);
         $entry['feedId'] = $this->Entries_Model->addFeed($userId, $feed);
         $entry['entryId'] = $this->Entries_Model->saveEntry($entry);
         if ($entry['entryId'] == null) {
             $entry['entryId'] = $this->Entries_Model->getEntryIdByFeedIdAndEntryUrl($entry['feedId'], $entry['entryUrl']);
         }
         $this->Entries_Model->saveUserEntries($userId, $entry['feedId'], $entry['entryId']);
         $this->Entries_Model->saveTmpUsersEntries($userId, array(array('userId' => $userId, 'entryId' => $entry['entryId'], 'entryStarred' => true, 'entryRead' => true)));
     }
     $this->db->trans_complete();
     $this->Entries_Model->pushTmpUserEntries($userId);
     return loadViewAjax(true, array('msg' => lang('The import was successful'), 'goToUrl' => base_url(''), 'skipAppLink' => true));
 }
Exemplo n.º 12
0
 function feedsDelete()
 {
     if (!$this->safety->allowByControllerName('tools/feeds')) {
         return errorForbidden();
     }
     $aFeedId = (array) json_decode($this->input->post('aDelete'));
     foreach ($aFeedId as $feedId) {
         $this->Entries_Model->unsubscribeFeed($feedId, (int) $this->session->userdata('userId'));
     }
     return loadViewAjax(true);
 }
Exemplo n.º 13
0
 function doDownloadOPML()
 {
     if (!$this->safety->allowByControllerName('profile/edit')) {
         return errorForbidden();
     }
     $this->load->model('Feeds_Model');
     $this->load->helper('download');
     $userId = $this->session->userdata('userId');
     $data = $this->Users_Model->get($userId);
     $query = $this->Feeds_Model->selectFeedsOPML($userId);
     $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><opml version="1.0" />');
     $xml->xmlEndoding = 'UTF-8';
     $nHead = $xml->addChild('head');
     $nTitle = $nHead->addChild('title', 'cReader feeds of ' . element('userFirstName', $data) . ' ' . element('userLastName', $data));
     $nBody = $xml->addChild('body');
     $tagId = null;
     foreach ($query as $row) {
         if ($row['tagId'] != null) {
             if ($tagId != $row['tagId']) {
                 $nTag = $nBody->addChild('outline');
                 $nTag->addAttribute('text', $row['tagName']);
                 $nTag->addAttribute('title', $row['tagName']);
             }
             $tagId = $row['tagId'];
             $nParent = $nTag;
         } else {
             $nParent = $nBody;
         }
         $nFeed = $nParent->addChild('outline');
         $nFeed->addAttribute('type', 'rss');
         $nFeed->addAttribute('text', $row['feedName']);
         $nFeed->addAttribute('title', $row['feedName']);
         $nFeed->addAttribute('xmlUrl', $row['feedUrl']);
         $nFeed->addAttribute('htmlUrl', $row['feedLink']);
     }
     force_download('cReader.opml', $xml->saveXML());
 }
Exemplo n.º 14
0
 function shareByEmail($entryId)
 {
     if ($this->session->userdata('userId') == USER_ANONYMOUS) {
         return errorForbidden();
     }
     $data = $this->Entries_Model->get($entryId, false);
     if (empty($data)) {
         return error404();
     }
     $form = array('frmName' => 'frmShareByEmail', 'buttons' => array('<button type="submit" class="btn btn-primary"><i class="fa fa-envelope "></i> ' . lang('Send') . ' </button>'), 'icon' => 'fa fa-envelope fa-lg text-primary', 'modalHideOnSubmit' => true, 'title' => sprintf(lang('Send by email %s'), ' "' . $data['entryTitle'] . '" '), 'fields' => array('entryId' => array('type' => 'hidden', 'value' => $entryId), 'userFriendEmail' => array('type' => 'typeahead', 'label' => lang('For'), 'source' => base_url('search/friends/'), 'value' => array('id' => null, 'text' => null)), 'shareByEmailComment' => array('type' => 'textarea', 'label' => lang('Comment')), 'sendMeCopy' => array('type' => 'checkbox', 'label' => lang('Send me a copy'), 'checked' => true)));
     $form['rules'] = array(array('field' => 'userFriendEmail', 'label' => $form['fields']['userFriendEmail']['label'], 'rules' => 'trim|required|valid_email'));
     $this->form_validation->set_rules($form['rules']);
     if ($this->input->post() != false) {
         return $this->_saveShareByEmail();
     }
     $this->load->view('includes/crJsonForm', array('form' => $form));
 }
Exemplo n.º 15
0
 function deleteOldEntriesByFeedId($feedId)
 {
     if (!$this->safety->allowByControllerName('feeds/edit')) {
         return errorForbidden();
     }
     return loadViewAjax(true, 'affected rows: ' . $this->Feeds_Model->deleteOldEntriesByFeedId($feedId));
 }
Exemplo n.º 16
0
 function deleteDoc($testId)
 {
     if (!$this->safety->allowByControllerName(__CLASS__ . '/edit')) {
         return errorForbidden();
     }
     $this->load->model('Files_Model');
     $data = $this->Testing_Model->get($testId);
     if (!empty($data)) {
         $this->Files_Model->deleteFile(config_item('testDoc'), $data['testDocFileId']);
     }
     return loadViewAjax(true);
 }
Exemplo n.º 17
0
 function _oauth2($providerName)
 {
     if (!$this->safety->allowByControllerName('login')) {
         return errorForbidden();
     }
     $this->load->spark('oauth2/0.4.0/');
     $this->config->load('oauth2');
     $config = $this->config->item('oauth2');
     $config = $config[$providerName];
     $provider = $this->oauth2->provider($providerName, array('id' => $config['id'], 'secret' => $config['secret'], 'scope' => $config['scope']));
     if (!$this->input->get('code')) {
         $url = $provider->authorize();
         redirect($url);
     }
     try {
         $token = $provider->access($_GET['code']);
         $user = $provider->get_user_info($token);
         $user = $this->Users_Model->loginRemote($user['email'], $user['last_name'], $user['first_name'], $user['location'], $user['birthday'], $providerName, $user['uid']);
         if ($user == null) {
             return errorForbidden();
         }
         $this->session->set_userdata(array('userId' => $user['userId'], 'langId' => $user['langId'], 'groups' => sourceToArray($this->Users_Model->getGroups($user['userId']), 'groupId')));
         $this->Users_Model->updateUserLastAccess();
         // Si el usuario es nuevo y tiene email le enviamos el email de bienvenida
         if (element('isNewUser', $user) == true && $user['userEmail'] != null) {
             $this->load->model(array('Tasks_Model', 'Entries_Model'));
             $this->Tasks_Model->addTask('sendEmailWelcome', array('userId' => $user['userId']));
             $this->Entries_Model->addDefaultFeeds();
         }
         $onLoginUrl = $this->session->userdata('onLoginUrl');
         if ($onLoginUrl == null) {
             $onLoginUrl = '';
         }
         redirect($onLoginUrl);
     } catch (OAuth2_Exception $e) {
         redirect('login');
     }
     return errorForbidden();
 }