Example #1
0
 public function uploadImages($file)
 {
     $errors = array();
     $dwelling_Id = parent::getLastId();
     foreach ($file['files']['tmp_name'] as $key => $tmp_name) {
         $file_size = $file['files']['size'][$key];
         $file_tmp = $file['files']['tmp_name'][$key];
         $file_type = $file['files']['type'][$key];
         $ext = parent::GetImageExtension($file_type);
         $imagename = date("d-m-Y") . "-" . mt_rand() . "-" . time() . $ext;
         if ($file_size > 2097152) {
             $errors[] = 'File size must be less than 2 MB';
         }
         if (empty($errors) == true) {
             $desired_dir = "apartment_images";
             if (is_dir($desired_dir) == false) {
                 mkdir("{$desired_dir}", 0700);
             }
             move_uploaded_file($file_tmp, "{$desired_dir}/" . $imagename);
             parent::executeSqlQuery("INSERT into apartment_images VALUES(DEFAULT, '{$dwelling_Id}', '{$imagename}','{$file_size}','{$file_type}')");
         } else {
             print_r($errors);
         }
     }
 }
Example #2
0
 public function create(array $data = null)
 {
     $class = ucfirst($this->model);
     if ($data) {
         $obj = new $class();
         foreach ($data as $key => $value) {
             $obj->{$key} = $value;
         }
         $this->errors = $obj->complaints;
         $obj->save();
         $this->onCreate($obj);
         $id = Database::getLastId();
         $result = new Query($this->model, $id);
         $this->setRedirect("show/{$id}", ucfirst($this->model + " created."));
     }
     if ($result) {
         return $result->getRow(1);
     }
 }
Example #3
0
 /**
  * Call action (mark as fav, archive, delete, etc.)
  */
 public function action($action, Url $url, $id = 0, $import = FALSE, $autoclose = FALSE, $tags = null)
 {
     switch ($action) {
         case 'add':
             $content = Tools::getPageContent($url);
             $title = $content['rss']['channel']['item']['title'] != '' ? $content['rss']['channel']['item']['title'] : _('Untitled');
             $body = $content['rss']['channel']['item']['description'];
             // clean content from prevent xss attack
             $purifier = $this->_getPurifier();
             $title = $purifier->purify($title);
             $body = $purifier->purify($body);
             //search for possible duplicate
             $duplicate = NULL;
             $duplicate = $this->store->retrieveOneByURL($url->getUrl(), $this->user->getId());
             $last_id = $this->store->add($url->getUrl(), $title, $body, $this->user->getId());
             if ($last_id) {
                 Tools::logm('add link ' . $url->getUrl());
                 if (DOWNLOAD_PICTURES) {
                     $content = Picture::filterPicture($body, $url->getUrl(), $last_id);
                     Tools::logm('updating content article');
                     $this->store->updateContent($last_id, $content, $this->user->getId());
                 }
                 if ($duplicate != NULL) {
                     // duplicate exists, so, older entry needs to be deleted (as new entry should go to the top of list), BUT favorite mark and tags should be preserved
                     Tools::logm('link ' . $url->getUrl() . ' is a duplicate');
                     // 1) - preserve tags and favorite, then drop old entry
                     $this->store->reassignTags($duplicate['id'], $last_id);
                     if ($duplicate['is_fav']) {
                         $this->store->favoriteById($last_id, $this->user->getId());
                     }
                     if ($this->store->deleteById($duplicate['id'], $this->user->getId())) {
                         Tools::logm('previous link ' . $url->getUrl() . ' entry deleted');
                     }
                 }
                 // if there are tags, add them to the new article
                 if (isset($_GET['tags'])) {
                     $_POST['value'] = $_GET['tags'];
                     $_POST['entry_id'] = $last_id;
                     $this->action('add_tag', $url);
                 }
                 $this->messages->add('s', _('the link has been added successfully'));
             } else {
                 $this->messages->add('e', _('error during insertion : the link wasn\'t added'));
                 Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl());
             }
             if ($autoclose == TRUE) {
                 Tools::redirect('?view=home&closewin=true');
             } else {
                 Tools::redirect('?view=home');
             }
             return $last_id;
             break;
         case 'delete':
             if (isset($_GET['search'])) {
                 //when we want to apply a delete to a search
                 $tags = array($_GET['search']);
                 $allentry_ids = $this->store->search($tags[0], $this->user->getId());
                 $entry_ids = array();
                 foreach ($allentry_ids as $eachentry) {
                     $entry_ids[] = $eachentry[0];
                 }
             } else {
                 // delete a single article
                 $entry_ids = array($id);
             }
             foreach ($entry_ids as $id) {
                 $msg = 'delete link #' . $id;
                 if ($this->store->deleteById($id, $this->user->getId())) {
                     if (DOWNLOAD_PICTURES) {
                         Picture::removeDirectory(ABS_PATH . $id);
                     }
                     $this->messages->add('s', _('the link has been deleted successfully'));
                 } else {
                     $this->messages->add('e', _('the link wasn\'t deleted'));
                     $msg = 'error : can\'t delete link #' . $id;
                 }
                 Tools::logm($msg);
             }
             Tools::redirect('?');
             break;
         case 'toggle_fav':
             $this->store->favoriteById($id, $this->user->getId());
             Tools::logm('mark as favorite link #' . $id);
             if (Tools::isAjaxRequest()) {
                 echo 1;
                 exit;
             } else {
                 Tools::redirect();
             }
             break;
         case 'toggle_archive':
             if (isset($_GET['tag_id'])) {
                 //when we want to archive a whole tag
                 $tag_id = $_GET['tag_id'];
                 $allentry_ids = $this->store->retrieveEntriesByTag($tag_id, $this->user->getId());
                 $entry_ids = array();
                 foreach ($allentry_ids as $eachentry) {
                     $entry_ids[] = $eachentry[0];
                 }
             } else {
                 //archive a single article
                 $entry_ids = array($id);
             }
             foreach ($entry_ids as $id) {
                 $this->store->archiveById($id, $this->user->getId());
                 Tools::logm('archive link #' . $id);
             }
             if (Tools::isAjaxRequest()) {
                 echo 1;
                 exit;
             } else {
                 Tools::redirect();
             }
             break;
         case 'archive_all':
             $this->store->archiveAll($this->user->getId());
             Tools::logm('archive all links');
             Tools::redirect();
             break;
         case 'add_tag':
             if (isset($_GET['search'])) {
                 //when we want to apply a tag to a search
                 $tags = array($_GET['search']);
                 $allentry_ids = $this->store->search($tags[0], $this->user->getId());
                 $entry_ids = array();
                 foreach ($allentry_ids as $eachentry) {
                     $entry_ids[] = $eachentry[0];
                 }
             } else {
                 //add a tag to a single article
                 $tags = explode(',', $_POST['value']);
                 $entry_ids = array($_POST['entry_id']);
             }
             foreach ($entry_ids as $entry_id) {
                 $entry = $this->store->retrieveOneById($entry_id, $this->user->getId());
                 if (!$entry) {
                     $this->messages->add('e', _('Article not found!'));
                     Tools::logm('error : article not found');
                     Tools::redirect();
                 }
                 //get all already set tags to preven duplicates
                 $already_set_tags = array();
                 $entry_tags = $this->store->retrieveTagsByEntry($entry_id);
                 foreach ($entry_tags as $tag) {
                     $already_set_tags[] = $tag['value'];
                 }
                 foreach ($tags as $key => $tag_value) {
                     $value = trim($tag_value);
                     if ($value && !in_array($value, $already_set_tags)) {
                         $tag = $this->store->retrieveTagByValue($value);
                         if (is_null($tag)) {
                             # we create the tag
                             $tag = $this->store->createTag($value);
                             $sequence = '';
                             if (STORAGE == 'postgres') {
                                 $sequence = 'tags_id_seq';
                             }
                             $tag_id = $this->store->getLastId($sequence);
                         } else {
                             $tag_id = $tag['id'];
                         }
                         # we assign the tag to the article
                         $this->store->setTagToEntry($tag_id, $entry_id);
                     }
                 }
             }
             $this->messages->add('s', _('The tag has been applied successfully'));
             Tools::logm('The tag has been applied successfully');
             Tools::redirect();
             break;
         case 'remove_tag':
             $tag_id = $_GET['tag_id'];
             $entry = $this->store->retrieveOneById($id, $this->user->getId());
             if (!$entry) {
                 $this->messages->add('e', _('Article not found!'));
                 Tools::logm('error : article not found');
                 Tools::redirect();
             }
             $this->store->removeTagForEntry($id, $tag_id);
             Tools::logm('tag entry deleted');
             if ($this->store->cleanUnusedTag($tag_id)) {
                 Tools::logm('tag deleted');
             }
             $this->messages->add('s', _('The tag has been successfully deleted'));
             Tools::redirect();
             break;
         case 'reload_article':
             Tools::logm('reload article');
             $id = $_GET['id'];
             $entry = $this->store->retrieveOneById($id, $this->user->getId());
             Tools::logm('reload url ' . $entry['url']);
             $url = new Url(base64_encode($entry['url']));
             $this->action('add', $url);
             break;
             /* For some unknown reason I can't get displayView() to work here (it redirects to home view afterwards). So here's a dirty fix which redirects directly to URL */
         /* For some unknown reason I can't get displayView() to work here (it redirects to home view afterwards). So here's a dirty fix which redirects directly to URL */
         case 'random':
             Tools::logm('get a random article');
             if ($this->store->getRandomId($this->user->getId())) {
                 $id_array = $this->store->getRandomId($this->user->getId());
                 $id = $id_array[0];
                 Tools::redirect('?view=view&id=' . $id[0]);
                 Tools::logm('got the article with id ' . $id[0]);
             }
             break;
         default:
             break;
     }
 }