function handle_success($file) { if (lock_exists($file)) { if (remove_lock($file)) { send_email("Uptime Detected for {$file}"); } else { // could not remove lock } } }
<?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) {
$vals['file_3']->move('inc/app/sitewiki/data', $vals['id'] . '_' . $file_id); } } } lock_remove('sitewiki_page', $vals['id']); header('Location: ' . site_prefix() . '/index/sitewiki-app/show.' . $vals['id']); exit; } } $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;
$width[$field->name] = $data['fields'][$field->name]['width'] ? $data['fields'][$field->name]['width'] : 'auto'; if (isset($rex->info['browse:' . $field->name]['length']) && strlen($tmp->{$field->name}) > $rex->info['browse:' . $field->name]['length']) { $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);
$parameters['align'] = 'right'; } elseif ($parameters['align'] == 'false') { $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; }
/** * 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; }