<?php global $cgi; loader_import('cms.Workflow.Lock'); lock_init(); if (lock_exists($cgi->_collection, $cgi->_key)) { page_title(intl_get('Item Locked by Another User')); echo '<p><a href="javascript: history.go (-1)">' . intl_get('Back') . '</a></p>'; echo template_simple(LOCK_INFO_TEMPLATE, lock_info($cgi->_collection, $cgi->_key)); return; } else { lock_add($cgi->_collection, $cgi->_key); } class SitestudyEditForm extends MailForm { function SitestudyEditForm() { parent::MailForm(); $this->parseSettings('inc/app/sitestudy/forms/edit/settings.php'); global $page, $cgi; page_title(intl_get('Editing Case Study') . ': ' . $cgi->_key); loader_import('ext.phpsniff'); $sniffer = new phpSniff(); $this->_browser = $sniffer->property('browser'); // include formhelp, edit panel init, and cancel handler page_add_script(site_prefix() . '/js/formhelp.js'); page_add_script(CMS_JS_FORMHELP_INIT); page_onload('cms_init_edit_panels ()'); page_add_script(' function cms_cancel_unlock (f, collection, key) { if (arguments.length == 0) {
} $form = new SitewikiEditForm(); if ($form->editable && !isset($cgi->editing)) { if (!session_valid()) { global $session; $session->username = ''; } if (lock_exists('sitewiki_page', $cgi->page)) { if ($cgi->break_lock == 1) { lock_remove('sitewiki_page', $cgi->page); if (!session_valid()) { $session->username = '******'; } lock_add('sitewiki_page', $cgi->page); } else { $info = lock_info('sitewiki_page', $cgi->page); loader_import('saf.Date'); $now = time(); $then = Date::toUnix($info->expires) - 3600; $diff = $now - $then; $info->min = round($diff / 60); echo template_simple('locked.spt', $info); return; } } else { if (!session_valid()) { $session->username = '******'; } lock_add('sitewiki_page', $cgi->page); } }
$tmp->{$field->name} = rtrim(substr($tmp->{$field->name}, 0, $rex->info['browse:' . $field->name]['length'] - 3)) . '...'; } } if (!isset($row->{$rex->key})) { $pkeys = preg_split('/, ?/', $rex->key); $row->{$rex->key} = ''; $sep = ''; foreach ($pkeys as $pk) { $row->{$rex->key} .= $sep . $row->{$pk}; $sep = '|'; } } $res2[$row->{$rex->key}] = $tmp; $locks[$row->{$rex->key}] = lock_exists($cgi->collection, $row->{$rex->key}); if ($locks[$row->{$rex->key}]) { $lock_info = lock_info($cgi->collection, $row->{$rex->key}); $res2[$row->{$rex->key}]->lock_owner = $lock_info->user; $res2[$row->{$rex->key}]->lock_expires = $lock_info->expires; loader_import('cms.Filters'); } if (isset($row->sitellite_access) && !session_allowed($row->sitellite_access, 'w', 'access')) { $editable[$row->{$rex->key}] = false; } elseif (isset($row->sitellite_team) && !session_allowed($row->sitellite_team, 'w', 'team')) { $editable[$row->{$rex->key}] = false; } else { $editable[$row->{$rex->key}] = true; } } $pg->setData($res2); $pg->update(); //page_title (intl_get ('Browsing') . ': ' . $rex->info['Collection']['display']);
$parameters['align'] = false; } if (!isset($parameters['inline'])) { $parameters['inline'] = false; } else { $parameters['inline'] = true; } if (!isset($parameters['return']) && $parameters['collection'] == 'sitellite_page') { $parameters['return'] = site_current(); } $parameters['return_v1'] = site_current(); loader_import('cms.Workflow.Lock'); lock_init(); if (lock_exists($parameters['collection'], $parameters['id'])) { $parameters['editable'] = false; $lock_info = lock_info($parameters['collection'], $parameters['id']); $parameters['lock_owner'] = $lock_info->user; $parameters['lock_expires'] = $lock_info->expires; loader_import('cms.Filters'); } if (session_is_resource('delete') && !session_allowed('delete', 'rw', 'resource')) { $parameters['deletable'] = false; } if ($rex->isVersioned && $parameters['editable']) { //session_allowed ('approved', 'w', 'status')) { $parameters['history'] = true; } else { $parameters['history'] = false; } if ($parameters['collection'] == 'sitellite_page') { $c = $rex->getCurrent($parameters['id']);
/** * checkLock() helper * * @param string resource path to check for locks * @return bool true on success */ function checkLock($path, $token = false) { $path = strtolower(trim($path, '/')); /*if (! $sitellite) { // called by parent class $path = trim ($this->_path (), '/'); }*/ loader_import('cms.Workflow.Lock'); lock_init(); if (@is_dir($this->base . '/' . $path)) { if (lock_exists('sitellite_filesystem', $path)) { $info = lock_info('sitellite_filesystem', $path); if ($token && $token != $info->token) { return false; } return array('type' => 'write', 'scope' => 'exclusive', 'depth' => 'infinite', 'owner' => $info->user, 'token' => $info->token, 'created' => strtotime($info->created), 'modified' => strtotime($info->modified), 'expires' => strtotime($info->expires)); } } else { if (lock_exists('sitellite_filesystem', $path)) { $info = lock_info('sitellite_filesystem', $path); if ($token && $token != $info->token) { return false; } return array('type' => 'write', 'scope' => 'exclusive', 'depth' => 0, 'owner' => $info->user, 'token' => $info->token, 'created' => strtotime($info->created), 'modified' => strtotime($info->modified), 'expires' => strtotime($info->expires)); } // TODO: check for locks on folders as well } return false; }
function webfiles_lock($path) { $path = trim($path, '/'); while (!empty($path)) { $info = lock_info('sitellite_filesystem', $path); if (is_object($info)) { return (object) array('owner' => $info->user, 'expires' => $info->expires); } $parts = pathinfo($path); $path = $parts['dirname']; if ($parts['dirname'] == '.' || empty($parts['dirname'])) { $path = ''; } } return false; }