function edit($asset_id, $data) { if (!vivvo_hooks_manager::call('asset_edit', array(&$asset_id, &$data))) { return vivvo_hooks_manager::get_status(); } $sm = vivvo_lite_site::get_instance(); if ($sm->user) { if ($sm->user->is('ASSET_MANAGER') || $sm->user->can('MANAGE_FILES')) { $asset_list = new AssetFiles_list(); $file = $asset_list->get_asset_by_id($asset_id); if ($file !== false) { if (empty($data['filename'])) { $this->set_error_code(2839); return false; } //rename file if ($data['filename'] != $file->get_name()) { //just in case if (strpos($data['filename'], '/') !== false) { $this->set_error_code(2828); return false; } $full_old = VIVVO_FS_ROOT . $file->get_fullname(); $dir = dirname($full_old) . '/'; $ext = $file->get_extension(); $full_new = $dir . $data['filename'] . '.' . $ext; if (file_exists($full_old)) { if (file_exists($full_new)) { $this->set_error_code(2829); return false; } if (@rename($full_old, $full_new)) { $data['name'] = $data['filename']; admin_log($sm->user->get_username(), 'Renamed file ' . $file->get_fullname() . ' to ' . $file->get_path() . $data['filename'] . '.' . $ext); } else { $this->set_error_code(2823); return false; } } else { $this->set_error_code(2824); return false; } } //save keywords if (isset($data['keywords'])) { $keywords = explode(',', $data['keywords']); $db = $sm->get_db(); $db->exec("DELETE FROM " . VIVVO_DB_PREFIX . "asset_keywords WHERE asset_id={$asset_id}"); foreach ($keywords as $key) { $db->exec("INSERT INTO " . VIVVO_DB_PREFIX . "asset_keywords (asset_id, keyword) VALUES ({$asset_id}, '" . secure_sql(trim($key)) . "')"); } } unset($data['keywords']); if ($file->populate($data, true) === false) { $this->set_error_info($file->get_error_info()); return false; } $this->_post_master->set_data_object($file); if ($this->_post_master->sql_update()) { return true; } else { $this->set_error_code(2835); return false; } } else { $this->set_error_code(2808); return false; } } else { $this->set_error_code(2821); return false; } } else { $this->set_error_code(2822); return false; } }
function _file_tooltip() { $um = vivvo_lite_site::get_instance()->get_url_manager(); require_once VIVVO_FS_ROOT . 'lib/vivvo/framework/asset_files.class.php'; $asset_files = new AssetFiles_list(); $content_template =& $this->load_template($this->_template_root . 'components/file_picker_tooltip.xml'); $content_template->assign('file', $asset_files->get_asset_by_id($um->get_param('file_id'))); return $content_template; }
/** * Generate box output * * @param array $params Parameters */ function generate_output($params) { $this->set_template($params); if (isset($params['pg'])) { $cur_page = (int) $params['pg']; } if (empty($cur_page)) { $cur_page = 1; } $params['pg'] = $cur_page; $params['offset'] = ($cur_page - 1) * $params['search_limit']; if (empty($params['offset'])) { $params['offset'] = 0; } if (substr($params['search_dir'], -1) != '/') { $params['search_dir'] .= '/'; } require_once VIVVO_FS_FRAMEWORK . 'asset_files.class.php'; $assets = new AssetFiles_list(); if ($assets->is_changed($params['search_dir'])) { //if dir changed re-read the file list require_once VIVVO_FS_ROOT . 'lib/vivvo/service/assets.service.php'; $asset_service = new assets_service(); $asset_service->scan_dir($params['search_dir']); } $um = vivvo_lite_site::get_instance()->get_url_manager(); require_once VIVVO_FS_FRAMEWORK . 'asset_keywords.class.php'; if ($search_quick = $um->get_param('search_all_quick')) { //quick search from filepicker $ids = array(); $keywords = new AssetKeywords_list(); if ($result = $keywords->get_keywords_by_fulltext($search_quick)) { foreach ($result as $row) { $ids[] = $row->get_asset_id(); } } $search = array('search_name_wildcard' => $search_quick); if ($ids) { $assets->_default_query(true); $assets->_query->add_where('(f.id IN (' . implode(',', $ids) . '))'); $assets->_query->add_where("(f.name LIKE '%" . secure_sql($search_quick) . "%')", 'OR'); $assets->_query->add_where('filetype_id != ' . VIVVO_ASSETS_DIRTYPE_ID); $assets->_query->add_order('path ASC'); $limit = (int) $params['search_limit']; $assets->_query->set_limit($limit); $offset = (int) $params['offset']; $assets->_query->set_offset($offset); $assets->set_list(); } else { $assets->search(array('search_name_wildcard' => $search_quick), 'path', 'ASC', $params['search_limit'], $params['offset']); } } elseif (empty($params['search_do_advanced'])) { //regular search $assets->search(array('search_dir' => $params['search_dir'], 'search_ext' => $params['search_ext']), $params['search_sort_by'], $params['search_order'], $params['search_limit'], $params['offset']); } else { //advanced search $search = array(); if (!empty($params['search_dir'])) { if (empty($params['search_subfolders'])) { $search['search_dir'] = $params['search_dir']; } else { $search['search_under_path'] = $params['search_dir']; } } if (!empty($params['search_ext'])) { $search['search_ext'] = $params['search_ext']; } if (!empty($params['search_filetype_id'])) { $search['search_filetype_id'] = $params['search_filetype_id']; } if (!empty($params['search_filename'])) { if (!empty($params['search_exact_name'])) { // get rid of extension, if exists $pos = strrpos($params['search_filename'], '.'); $search['search_name'] = $pos === false ? $params['search_filename'] : substr($params['search_filename'], 0, $pos); } else { $search['search_name_wildcard'] = $params['search_filename']; } } if (!empty($params['search_info'])) { $search['search_info'] = $params['search_info']; } if (!empty($params['search_keywords'])) { $keywords = new AssetKeywords_list(); $result = $keywords->get_keywords_by_fulltext($params['search_keywords']); if ($result) { $ids = array(); foreach ($result as $row) { $ids[] = $row->get_asset_id(); } if ($ids) { $search['search_id'] = $ids; } } } if (!empty($params['search_date_after'])) { $search['search_date_after'] = $params['search_date_after']; } $assets->search($search, $params['search_sort_by'], $params['search_order'], $params['search_limit'], $params['offset']); } $assets->set_pagination($cur_page); if (empty($search_quick)) { // if not filepicker, prefetch keywords for each record $asset_ids = $assets->get_list_ids(); $keylist = new AssetKeywords_list(); $keywords = $keylist->search(array('search_asset_id_list' => $asset_ids)); foreach ($keywords as $key) { $key_id = $key->asset_id; $item =& $assets->list[$key_id]; if (empty($item->keywords)) { $item->keywords = array($key->keyword); } else { if (!is_array($item->keywords)) { $item->keywords = array_map('trim', explode(',', $item->keywords)); } $item->keywords[] = $key->keyword; } $item->keywords = implode(', ', array_unique($item->keywords)); } foreach ($assets->list as $i => $k) { if (!$k->keywords) { $assets->list[$i]->keywords = ''; } } } $this->_template->assign('dir', $params['search_dir']); $this->_template->assign('file_list_object', $assets); $this->_template->assign('file_list', $assets->list); $this->_template->assign('box_id', $params['box_id']); $this->_template->assign('prefix', $params['prefix']); }
/** * Generate box output * * @param array $params Parameters */ function generate_output($params) { $this->set_template($params); if (isset($params['pg'])) { $cur_page = (int) $params['pg']; } if (empty($cur_page)) { $cur_page = 1; } $params['pg'] = $cur_page; $params['offset'] = ($cur_page - 1) * $params['search_limit']; if (empty($params['offset'])) { $params['offset'] = 0; } if (substr($params['search_dir'], -1) != '/') { $params['search_dir'] .= '/'; } require_once VIVVO_FS_FRAMEWORK . 'asset_files.class.php'; $assets = new AssetFiles_list(); if ($assets->is_changed($params['search_dir'])) { //if dir changed re-read the file list require_once VIVVO_FS_ROOT . 'lib/vivvo/service/assets.service.php'; $asset_service = new assets_service(); $asset_service->scan_dir($params['search_dir']); } $um = vivvo_lite_site::get_instance()->get_url_manager(); if ($search_quick = $um->get_param('search_all_quick')) { //quick search from filepicker require_once VIVVO_FS_FRAMEWORK . 'asset_keywords.class.php'; $ids = array(); $keywords = new AssetKeywords_list(); if ($result = $keywords->get_keywords_by_fulltext($search_quick)) { foreach ($result as $row) { $ids[] = $row->get_asset_id(); } } $search = array('search_name_starts_with' => $search_quick); if ($ids) { $assets->_default_query(true); $assets->_query->add_where('(f.id IN (' . implode(',', $ids) . '))'); $assets->_query->add_where("(f.name LIKE '" . secure_sql($search_quick) . "%')", 'OR'); $assets->_query->add_order('path ASC'); $limit = (int) $params['search_limit']; $assets->_query->set_limit($limit); $offset = (int) $params['offset']; $assets->_query->set_offset($offset); $assets->set_list(); } else { $assets->search(array('search_name_starts_with' => $search_quick), 'path', 'ASC', $params['search_limit'], $params['offset']); } } elseif (empty($params['search_do_advanced'])) { //regular search $assets->search(array('search_dir' => $params['search_dir'], 'search_ext' => $params['search_ext']), $params['search_sort_by'], $params['search_order'], $params['search_limit'], $params['offset']); } else { //advanced search $search = array(); if (empty($params['search_subfolders'])) { $search['search_dir'] = $params['search_dir']; } else { $search['search_under_path'] = $params['search_dir']; } if (!empty($params['search_ext'])) { $search['search_ext'] = $params['search_ext']; } if (!empty($params['search_filename'])) { $search['search_name_starts_with'] = $params['search_filename']; } if (!empty($params['search_info'])) { $search['search_info'] = $params['search_info']; } if (!empty($params['search_keywords'])) { require_once VIVVO_FS_FRAMEWORK . 'asset_keywords.class.php'; $keywords = new AssetKeywords_list(); $result = $keywords->get_keywords_by_fulltext($params['search_keywords']); if ($result) { $ids = array(); foreach ($result as $row) { $ids[] = $row['asset_id']; } if ($ids) { $search['search_id'] = $ids; } } } if (!empty($params['search_date_after'])) { $search['search_date_after'] = $params['search_date_after']; } $assets->search($search, $params['search_sort_by'], $params['search_order'], $params['search_limit'], $params['offset']); } $assets->set_pagination($cur_page); $this->_template->assign('dir', $params['search_dir']); $this->_template->assign('file_list_object', $assets); $this->_template->assign('file_list', $assets->list); $this->_template->assign('box_id', $params['box_id']); $this->_template->assign('prefix', $params['prefix']); }
/** * Modal window view */ public function _modal_output() { $um = vivvo_lite_site::get_instance()->get_url_manager(); $template = $this->load_template($this->_template_root . 'modal.xml'); $filename = $um->get_param('file'); require_once VIVVO_FS_FRAMEWORK . '/asset_files.class.php'; $asset_list = new AssetFiles_list(vivvo_lite_site::get_instance()); $file = $asset_list->get_asset_by_fullname($filename); if ($file) { $template->assign('file', $file); } return $template; }