/** * rcube_shared.inc: in_array_nocase() */ function test_in_array_nocase() { $haystack = array('Test'); $needle = 'test'; $result = in_array_nocase($needle, $haystack); $this->assertTrue($result, $title); $result = in_array_nocase($needle, null); $this->assertFalse($result, $title); }
/** * @see IDX_Panel::getOptions() */ public function getOptions() { $idx = Util_IDX::getIdx(); $db_idx = Util_IDX::getDatabase(); $query = "SELECT DISTINCT `" . $idx->field($this->field) . "` AS `value` FROM `" . $idx->getTable() . "`" . (!empty($extra) ? ' WHERE ' . $extra : '') . " ORDER BY `" . $idx->field($this->field) . "` DESC LIMIT 20;"; if ($result = $db_idx->query($query)) { while ($option = $db_idx->fetchArray($result)) { $options[] = $option['value']; } } else { return false; } if (!empty($options)) { $post = array(); $confirmed = array(); foreach ($options as $val) { $pre = explode(',', $val); //confirm and add to array foreach ($pre as $opt) { $opt = preg_replace('/(^\\s+)|(\\s{2,})|(\\s+$)|(\\n)|(\\r)/', ' ', $opt); //trim and remove exessive spacing if (!in_array_nocase($opt, $confirmed) && !empty($opt)) { if (!empty($filter)) { if (preg_match($filter, $opt)) { $confirmed[] = $opt; } } else { $confirmed[] = $opt; } } } } //sort them if (!empty($confirmed)) { asort($confirmed); foreach ($confirmed as $opt) { $post[] = array('value' => $opt, 'title' => ucwords(strtolower($opt))); } } $this->options = $post; } else { return false; } return $this->options; }
/** * Create all folders specified as default */ function create_default_folders() { $a_folders = iil_C_ListMailboxes($this->conn, $this->mod_mailbox(''), '*'); $a_subscribed = iil_C_ListSubscribed($this->conn, $this->mod_mailbox(''), '*'); // create default folders if they do not exist foreach ($this->default_folders as $folder) { $abs_name = $this->mod_mailbox($folder); if (!in_array_nocase($abs_name, $a_folders)) { $this->create_mailbox($folder, TRUE); } else { if (!in_array_nocase($abs_name, $a_subscribed)) { $this->subscribe($folder); } } } }
/** * Checks if folder exists and is subscribed * * @param string $folder Folder name * @param boolean $subscription Enable subscription checking * * @return boolean TRUE or FALSE */ public function folder_exists($folder, $subscription = false) { if ($folder == 'INBOX') { return true; } $key = $subscription ? 'subscribed' : 'existing'; if (is_array($this->icache[$key]) && in_array($folder, $this->icache[$key])) { return true; } if (!$this->check_connection()) { return false; } if ($subscription) { // It's possible we already called LIST command, check LIST data if (!empty($this->conn->data['LIST']) && !empty($this->conn->data['LIST'][$folder]) && in_array_nocase('\\Subscribed', $this->conn->data['LIST'][$folder])) { $a_folders = array($folder); } else { $a_folders = $this->conn->listSubscribed('', $folder); } } else { // It's possible we already called LIST command, check LIST data if (!empty($this->conn->data['LIST']) && isset($this->conn->data['LIST'][$folder])) { $a_folders = array($folder); } else { $a_folders = $this->conn->listMailboxes('', $folder); } } if (is_array($a_folders) && in_array($folder, $a_folders)) { $this->icache[$key][] = $folder; return true; } return false; }
/** * Checks the PERMANENTFLAGS capability of the current folder * and returns true if the given flag is supported by the IMAP server * * @param string $flag Permanentflag name * * @return boolean True if this flag is supported */ public function check_permflag($flag) { $flag = strtoupper($flag); $perm_flags = $this->get_permflags($this->folder); $imap_flag = $this->conn->flags[$flag]; return $imap_flag && !empty($perm_flags) && in_array_nocase($imap_flag, $perm_flags); }
function action_div($fid, $id, $div = true) { $action = isset($this->form) ? $this->form['actions'][$id] : $this->script[$fid]['actions'][$id]; $rows_num = isset($this->form) ? sizeof($this->form['actions']) : sizeof($this->script[$fid]['actions']); $out = $div ? '<div class="actionrow" id="actionrow' . $id . '">' . "\n" : ''; $out .= '<table><tr><td class="rowactions">'; // action select $select_action = new html_select(array('name' => "_action_type[{$id}]", 'id' => 'action_type' . $id, 'onchange' => 'action_type_select(' . $id . ')')); if (in_array('fileinto', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagemoveto')), 'fileinto'); } if (in_array('fileinto', $this->exts) && in_array('copy', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagecopyto')), 'fileinto_copy'); } $select_action->add(rcube::Q($this->plugin->gettext('messageredirect')), 'redirect'); if (in_array('copy', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagesendcopy')), 'redirect_copy'); } if (in_array('reject', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagediscard')), 'reject'); } else { if (in_array('ereject', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagediscard')), 'ereject'); } } if (in_array('vacation', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagereply')), 'vacation'); } $select_action->add(rcube::Q($this->plugin->gettext('messagedelete')), 'discard'); if (in_array('imapflags', $this->exts) || in_array('imap4flags', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('setflags')), 'setflag'); $select_action->add(rcube::Q($this->plugin->gettext('addflags')), 'addflag'); $select_action->add(rcube::Q($this->plugin->gettext('removeflags')), 'removeflag'); } if (in_array('variables', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('setvariable')), 'set'); } if (in_array('enotify', $this->exts) || in_array('notify', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('notify')), 'notify'); } $select_action->add(rcube::Q($this->plugin->gettext('messagekeep')), 'keep'); $select_action->add(rcube::Q($this->plugin->gettext('rulestop')), 'stop'); $select_type = $action['type']; if (in_array($action['type'], array('fileinto', 'redirect')) && $action['copy']) { $select_type .= '_copy'; } $out .= $select_action->show($select_type); $out .= '</td>'; // actions target inputs $out .= '<td class="rowtargets">'; // force domain selection in redirect email input $domains = (array) $this->rc->config->get('managesieve_domains'); if (!empty($domains)) { sort($domains); $domain_select = new html_select(array('name' => "_action_target_domain[{$id}]", 'id' => 'action_target_domain' . $id)); $domain_select->add(array_combine($domains, $domains)); if ($action['type'] == 'redirect') { $parts = explode('@', $action['target']); if (!empty($parts)) { $action['domain'] = array_pop($parts); $action['target'] = implode('@', $parts); } } } // redirect target $out .= '<span id="redirect_target' . $id . '" style="white-space:nowrap;' . ' display:' . ($action['type'] == 'redirect' ? 'inline' : 'none') . '">' . '<input type="text" name="_action_target[' . $id . ']" id="action_target' . $id . '"' . ' value="' . ($action['type'] == 'redirect' ? rcube::Q($action['target'], 'strict', false) : '') . '"' . (!empty($domains) ? ' size="20"' : ' size="35"') . $this->error_class($id, 'action', 'target', 'action_target') . ' />' . (!empty($domains) ? ' @ ' . $domain_select->show($action['domain']) : '') . '</span>'; // (e)reject target $out .= '<textarea name="_action_target_area[' . $id . ']" id="action_target_area' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'targetarea', 'action_target_area') . 'style="display:' . (in_array($action['type'], array('reject', 'ereject')) ? 'inline' : 'none') . '">' . (in_array($action['type'], array('reject', 'ereject')) ? rcube::Q($action['target'], 'strict', false) : '') . "</textarea>\n"; // vacation $vsec = in_array('vacation-seconds', $this->exts); $out .= '<div id="action_vacation' . $id . '" style="display:' . ($action['type'] == 'vacation' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('vacationreason')) . '</span><br />' . '<textarea name="_action_reason[' . $id . ']" id="action_reason' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'reason', 'action_reason') . '>' . Q($action['reason'], 'strict', false) . "</textarea>\n"; $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('vacationsubject')) . '</span><br />' . '<input type="text" name="_action_subject[' . $id . ']" id="action_subject' . $id . '" ' . 'value="' . (is_array($action['subject']) ? rcube::Q(implode(', ', $action['subject']), 'strict', false) : $action['subject']) . '" size="35" ' . $this->error_class($id, 'action', 'subject', 'action_subject') . ' />'; $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('vacationaddr')) . '</span><br />' . $this->list_input($id, 'action_addresses', $action['addresses'], true, $this->error_class($id, 'action', 'addresses', 'action_addresses'), 30); $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext($vsec ? 'vacationinterval' : 'vacationdays')) . '</span><br />' . '<input type="text" name="_action_interval[' . $id . ']" id="action_interval' . $id . '" ' . 'value="' . rcube::Q(isset($action['seconds']) ? $action['seconds'] : $action['days'], 'strict', false) . '" size="2" ' . $this->error_class($id, 'action', 'interval', 'action_interval') . ' />'; if ($vsec) { $out .= ' <label><input type="radio" name="_action_interval_type[' . $id . ']" value="days"' . (!isset($action['seconds']) ? ' checked="checked"' : '') . ' class="radio" />' . $this->plugin->gettext('days') . '</label>' . ' <label><input type="radio" name="_action_interval_type[' . $id . ']" value="seconds"' . (isset($action['seconds']) ? ' checked="checked"' : '') . ' class="radio" />' . $this->plugin->gettext('seconds') . '</label>'; } $out .= '</div>'; // flags $flags = array('read' => '\\Seen', 'answered' => '\\Answered', 'flagged' => '\\Flagged', 'deleted' => '\\Deleted', 'draft' => '\\Draft'); $flags_target = (array) $action['target']; $out .= '<div id="action_flags' . $id . '" style="display:' . (preg_match('/^(set|add|remove)flag$/', $action['type']) ? 'inline' : 'none') . '"' . $this->error_class($id, 'action', 'flags', 'action_flags') . '>'; foreach ($flags as $fidx => $flag) { $out .= '<input type="checkbox" name="_action_flags[' . $id . '][]" value="' . $flag . '"' . (in_array_nocase($flag, $flags_target) ? 'checked="checked"' : '') . ' />' . rcube::Q($this->plugin->gettext('flag' . $fidx)) . '<br>'; } $out .= '</div>'; // set variable $set_modifiers = array('lower', 'upper', 'lowerfirst', 'upperfirst', 'quotewildcard', 'length'); $out .= '<div id="action_set' . $id . '" style="display:' . ($action['type'] == 'set' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('setvarname')) . '</span><br />' . '<input type="text" name="_action_varname[' . $id . ']" id="action_varname' . $id . '" ' . 'value="' . rcube::Q($action['name']) . '" size="35" ' . $this->error_class($id, 'action', 'name', 'action_varname') . ' />'; $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('setvarvalue')) . '</span><br />' . '<input type="text" name="_action_varvalue[' . $id . ']" id="action_varvalue' . $id . '" ' . 'value="' . rcube::Q($action['value']) . '" size="35" ' . $this->error_class($id, 'action', 'value', 'action_varvalue') . ' />'; $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('setvarmodifiers')) . '</span><br />'; foreach ($set_modifiers as $s_m) { $s_m_id = 'action_varmods' . $id . $s_m; $out .= sprintf('<input type="checkbox" name="_action_varmods[%s][]" value="%s" id="%s"%s />%s<br>', $id, $s_m, $s_m_id, array_key_exists($s_m, (array) $action) && $action[$s_m] ? ' checked="checked"' : '', rcube::Q($this->plugin->gettext('var' . $s_m))); } $out .= '</div>'; // notify $notify_methods = (array) $this->rc->config->get('managesieve_notify_methods'); $importance_options = $this->notify_importance_options; if (empty($notify_methods)) { $notify_methods = $this->notify_methods; } list($method, $target) = explode(':', $action['method'], 2); $method = strtolower($method); if ($method && !in_array($method, $notify_methods)) { $notify_methods[] = $method; } $select_method = new html_select(array('name' => "_action_notifymethod[{$id}]", 'id' => "_action_notifymethod{$id}", 'class' => $this->error_class($id, 'action', 'method', 'action_notifymethod'))); foreach ($notify_methods as $m_n) { $select_method->add(rcube::Q($this->rc->text_exists('managesieve.notifymethod' . $m_n) ? $this->plugin->gettext('managesieve.notifymethod' . $m_n) : $m_n), $m_n); } $select_importance = new html_select(array('name' => "_action_notifyimportance[{$id}]", 'id' => "_action_notifyimportance{$id}", 'class' => $this->error_class($id, 'action', 'importance', 'action_notifyimportance'))); foreach ($importance_options as $io_v => $io_n) { $select_importance->add(rcube::Q($this->plugin->gettext($io_n)), $io_v); } // @TODO: nice UI for mailto: (other methods too) URI parameters $out .= '<div id="action_notify' . $id . '" style="display:' . ($action['type'] == 'notify' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('notifytarget')) . '</span><br />' . $select_method->show($method) . '<input type="text" name="_action_notifytarget[' . $id . ']" id="action_notifytarget' . $id . '" ' . 'value="' . rcube::Q($target) . '" size="25" ' . $this->error_class($id, 'action', 'target', 'action_notifytarget') . ' />'; $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('notifymessage')) . '</span><br />' . '<textarea name="_action_notifymessage[' . $id . ']" id="action_notifymessage' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'message', 'action_notifymessage') . '>' . rcube::Q($action['message'], 'strict', false) . "</textarea>\n"; if (in_array('enotify', $this->exts)) { $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('notifyfrom')) . '</span><br />' . '<input type="text" name="_action_notifyfrom[' . $id . ']" id="action_notifyfrom' . $id . '" ' . 'value="' . rcube::Q($action['from']) . '" size="35" ' . $this->error_class($id, 'action', 'from', 'action_notifyfrom') . ' />'; } $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext('notifyimportance')) . '</span><br />'; $out .= $select_importance->show($action['importance'] ? (int) $action['importance'] : 2); $out .= '<div id="action_notifyoption_div' . $id . '">' . '<span class="label">' . rcube::Q($this->plugin->gettext('notifyoptions')) . '</span><br />' . $this->list_input($id, 'action_notifyoption', (array) $action['options'], true, $this->error_class($id, 'action', 'options', 'action_notifyoption'), 30) . '</div>'; $out .= '</div>'; // mailbox select if ($action['type'] == 'fileinto') { $mailbox = $this->mod_mailbox($action['target'], 'out'); } else { $mailbox = ''; } $select = $this->rc->folder_selector(array('realnames' => false, 'maxlength' => 100, 'id' => 'action_mailbox' . $id, 'name' => "_action_mailbox[{$id}]", 'style' => 'display:' . (empty($action['type']) || $action['type'] == 'fileinto' ? 'inline' : 'none'))); $out .= $select->show($mailbox); $out .= '</td>'; // add/del buttons $out .= '<td class="rowbuttons">'; $out .= '<a href="#" id="actionadd' . $id . '" title="' . rcube::Q($this->plugin->gettext('add')) . '" onclick="rcmail.managesieve_actionadd(' . $id . ')" class="button add"></a>'; $out .= '<a href="#" id="actiondel' . $id . '" title="' . rcube::Q($this->plugin->gettext('del')) . '" onclick="rcmail.managesieve_actiondel(' . $id . ')" class="button del' . ($rows_num < 2 ? ' disabled' : '') . '"></a>'; $out .= '</td>'; $out .= '</tr></table>'; $out .= $div ? "</div>\n" : ''; return $out; }
/** * Find index with the '$type' attribute * * @param string Field name * @return int Field index having $type set */ private function get_type_index($field, $type = 'pref') { $result = 0; if ($this->raw[$field]) { foreach ($this->raw[$field] as $i => $data) { if (is_array($data['type']) && in_array_nocase('pref', $data['type'])) { $result = $i; } } } return $result; }
/** * Auto-select IMAP host based on the posted login information * * @return string Selected IMAP host */ public function autoselect_host() { $default_host = $this->config->get('default_host'); $host = null; if (is_array($default_host)) { $post_host = rcube_utils::get_input_value('_host', rcube_utils::INPUT_POST); $post_user = rcube_utils::get_input_value('_user', rcube_utils::INPUT_POST); list($user, $domain) = explode('@', $post_user); // direct match in default_host array if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) { $host = $post_host; } else { if (!empty($domain)) { foreach ($default_host as $storage_host => $mail_domains) { if (is_array($mail_domains) && in_array_nocase($domain, $mail_domains)) { $host = $storage_host; break; } else { if (stripos($storage_host, $domain) !== false || stripos(strval($mail_domains), $domain) !== false) { $host = is_numeric($storage_host) ? $mail_domains : $storage_host; break; } } } } } // take the first entry if $host is still not set if (empty($host)) { list($key, $val) = each($default_host); $host = is_numeric($key) ? $val : $key; } } else { if (empty($default_host)) { $host = rcube_utils::get_input_value('_host', rcube_utils::INPUT_POST); } else { $host = rcube_utils::parse_host($default_host); } } return $host; }
/** * Checks the PERMANENTFLAGS capability of the current mailbox * and returns true if the given flag is supported by the IMAP server * * @param string Permanentflag name * @return mixed True if this flag is supported * @access public */ function check_permflag($flag) { $flag = strtoupper($flag); $imap_flag = $this->conn->flags[$flag]; return in_array_nocase($imap_flag, $this->conn->permanentflags); }
function action_div($fid, $id, $div = true) { $action = isset($this->form) ? $this->form['actions'][$id] : $this->script[$fid]['actions'][$id]; $rows_num = isset($this->form) ? sizeof($this->form['actions']) : sizeof($this->script[$fid]['actions']); $out = $div ? '<div class="actionrow" id="actionrow' . $id . '">' . "\n" : ''; $out .= '<table><tr><td class="rowactions">'; // action select $select_action = new html_select(array('name' => "_action_type[{$id}]", 'id' => 'action_type' . $id, 'onchange' => 'action_type_select(' . $id . ')')); if (in_array('fileinto', $this->exts)) { $select_action->add(Q($this->gettext('messagemoveto')), 'fileinto'); } if (in_array('fileinto', $this->exts) && in_array('copy', $this->exts)) { $select_action->add(Q($this->gettext('messagecopyto')), 'fileinto_copy'); } $select_action->add(Q($this->gettext('messageredirect')), 'redirect'); if (in_array('copy', $this->exts)) { $select_action->add(Q($this->gettext('messagesendcopy')), 'redirect_copy'); } if (in_array('reject', $this->exts)) { $select_action->add(Q($this->gettext('messagediscard')), 'reject'); } else { if (in_array('ereject', $this->exts)) { $select_action->add(Q($this->gettext('messagediscard')), 'ereject'); } } if (in_array('vacation', $this->exts)) { $select_action->add(Q($this->gettext('messagereply')), 'vacation'); } $select_action->add(Q($this->gettext('messagedelete')), 'discard'); if (in_array('imapflags', $this->exts) || in_array('imap4flags', $this->exts)) { $select_action->add(Q($this->gettext('setflags')), 'setflag'); $select_action->add(Q($this->gettext('addflags')), 'addflag'); $select_action->add(Q($this->gettext('removeflags')), 'removeflag'); } $select_action->add(Q($this->gettext('rulestop')), 'stop'); $select_type = $action['type']; if (in_array($action['type'], array('fileinto', 'redirect')) && $action['copy']) { $select_type .= '_copy'; } $out .= $select_action->show($select_type); $out .= '</td>'; // actions target inputs $out .= '<td class="rowtargets">'; // shared targets $out .= '<input type="text" name="_action_target[' . $id . ']" id="action_target' . $id . '" ' . 'value="' . ($action['type'] == 'redirect' ? Q($action['target'], 'strict', false) : '') . '" size="35" ' . 'style="display:' . ($action['type'] == 'redirect' ? 'inline' : 'none') . '" ' . $this->error_class($id, 'action', 'target', 'action_target') . ' />'; $out .= '<textarea name="_action_target_area[' . $id . ']" id="action_target_area' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'targetarea', 'action_target_area') . 'style="display:' . (in_array($action['type'], array('reject', 'ereject')) ? 'inline' : 'none') . '">' . (in_array($action['type'], array('reject', 'ereject')) ? Q($action['target'], 'strict', false) : '') . "</textarea>\n"; // vacation $out .= '<div id="action_vacation' . $id . '" style="display:' . ($action['type'] == 'vacation' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . Q($this->gettext('vacationreason')) . '</span><br />' . '<textarea name="_action_reason[' . $id . ']" id="action_reason' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'reason', 'action_reason') . '>' . Q($action['reason'], 'strict', false) . "</textarea>\n"; $out .= '<br /><span class="label">' . Q($this->gettext('vacationsubject')) . '</span><br />' . '<input type="text" name="_action_subject[' . $id . ']" id="action_subject' . $id . '" ' . 'value="' . (is_array($action['subject']) ? Q(implode(', ', $action['subject']), 'strict', false) : $action['subject']) . '" size="35" ' . $this->error_class($id, 'action', 'subject', 'action_subject') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('vacationaddresses')) . '</span><br />' . '<input type="text" name="_action_addresses[' . $id . ']" id="action_addr' . $id . '" ' . 'value="' . (is_array($action['addresses']) ? Q(implode(', ', $action['addresses']), 'strict', false) : $action['addresses']) . '" size="35" ' . $this->error_class($id, 'action', 'addresses', 'action_addr') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('vacationdays')) . '</span><br />' . '<input type="text" name="_action_days[' . $id . ']" id="action_days' . $id . '" ' . 'value="' . Q($action['days'], 'strict', false) . '" size="2" ' . $this->error_class($id, 'action', 'days', 'action_days') . ' />'; $out .= '</div>'; // flags $flags = array('read' => '\\Seen', 'answered' => '\\Answered', 'flagged' => '\\Flagged', 'deleted' => '\\Deleted', 'draft' => '\\Draft'); $flags_target = (array) $action['target']; $out .= '<div id="action_flags' . $id . '" style="display:' . (preg_match('/^(set|add|remove)flag$/', $action['type']) ? 'inline' : 'none') . '"' . $this->error_class($id, 'action', 'flags', 'action_flags') . '>'; foreach ($flags as $fidx => $flag) { $out .= '<input type="checkbox" name="_action_flags[' . $id . '][]" value="' . $flag . '"' . (in_array_nocase($flag, $flags_target) ? 'checked="checked"' : '') . ' />' . Q($this->gettext('flag' . $fidx)) . '<br>'; } $out .= '</div>'; // mailbox select if ($action['type'] == 'fileinto') { $mailbox = $this->mod_mailbox($action['target'], 'out'); } else { $mailbox = ''; } $select = rcmail_mailbox_select(array('realnames' => false, 'maxlength' => 100, 'id' => 'action_mailbox' . $id, 'name' => "_action_mailbox[{$id}]", 'style' => 'display:' . (!isset($action) || $action['type'] == 'fileinto' ? 'inline' : 'none'))); $out .= $select->show($mailbox); $out .= '</td>'; // add/del buttons $out .= '<td class="rowbuttons">'; $out .= '<a href="#" id="actionadd' . $id . '" title="' . Q($this->gettext('add')) . '" onclick="rcmail.managesieve_actionadd(' . $id . ')" class="button add"></a>'; $out .= '<a href="#" id="actiondel' . $id . '" title="' . Q($this->gettext('del')) . '" onclick="rcmail.managesieve_actiondel(' . $id . ')" class="button del' . ($rows_num < 2 ? ' disabled' : '') . '"></a>'; $out .= '</td>'; $out .= '</tr></table>'; $out .= $div ? "</div>\n" : ''; return $out; }
function action_div($fid, $id, $div = true) { $action = isset($this->form) ? $this->form['actions'][$id] : $this->script[$fid]['actions'][$id]; $rows_num = isset($this->form) ? sizeof($this->form['actions']) : sizeof($this->script[$fid]['actions']); $out = $div ? '<div class="actionrow" id="actionrow' . $id . '">' . "\n" : ''; $out .= '<table><tr><td class="rowactions">'; // action select $select_action = new html_select(array('name' => "_action_type[{$id}]", 'id' => 'action_type' . $id, 'onchange' => 'action_type_select(' . $id . ')')); if (in_array('fileinto', $this->exts)) { $select_action->add(Q($this->gettext('messagemoveto')), 'fileinto'); } if (in_array('fileinto', $this->exts) && in_array('copy', $this->exts)) { $select_action->add(Q($this->gettext('messagecopyto')), 'fileinto_copy'); } $select_action->add(Q($this->gettext('messageredirect')), 'redirect'); if (in_array('copy', $this->exts)) { $select_action->add(Q($this->gettext('messagesendcopy')), 'redirect_copy'); } if (in_array('reject', $this->exts)) { $select_action->add(Q($this->gettext('messagediscard')), 'reject'); } else { if (in_array('ereject', $this->exts)) { $select_action->add(Q($this->gettext('messagediscard')), 'ereject'); } } if (in_array('vacation', $this->exts)) { $select_action->add(Q($this->gettext('messagereply')), 'vacation'); } $select_action->add(Q($this->gettext('messagedelete')), 'discard'); if (in_array('imapflags', $this->exts) || in_array('imap4flags', $this->exts)) { $select_action->add(Q($this->gettext('setflags')), 'setflag'); $select_action->add(Q($this->gettext('addflags')), 'addflag'); $select_action->add(Q($this->gettext('removeflags')), 'removeflag'); } if (in_array('variables', $this->exts)) { $select_action->add(Q($this->gettext('setvariable')), 'set'); } if (in_array('enotify', $this->exts) || in_array('notify', $this->exts)) { $select_action->add(Q($this->gettext('notify')), 'notify'); } $select_action->add(Q($this->gettext('rulestop')), 'stop'); $select_type = $action['type']; if (in_array($action['type'], array('fileinto', 'redirect')) && $action['copy']) { $select_type .= '_copy'; } $out .= $select_action->show($select_type); $out .= '</td>'; // actions target inputs $out .= '<td class="rowtargets">'; // shared targets $out .= '<input type="text" name="_action_target[' . $id . ']" id="action_target' . $id . '" ' . 'value="' . ($action['type'] == 'redirect' ? Q($action['target'], 'strict', false) : '') . '" size="35" ' . 'style="display:' . ($action['type'] == 'redirect' ? 'inline' : 'none') . '" ' . $this->error_class($id, 'action', 'target', 'action_target') . ' />'; $out .= '<textarea name="_action_target_area[' . $id . ']" id="action_target_area' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'targetarea', 'action_target_area') . 'style="display:' . (in_array($action['type'], array('reject', 'ereject')) ? 'inline' : 'none') . '">' . (in_array($action['type'], array('reject', 'ereject')) ? Q($action['target'], 'strict', false) : '') . "</textarea>\n"; // vacation $out .= '<div id="action_vacation' . $id . '" style="display:' . ($action['type'] == 'vacation' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . Q($this->gettext('vacationreason')) . '</span><br />' . '<textarea name="_action_reason[' . $id . ']" id="action_reason' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'reason', 'action_reason') . '>' . Q($action['reason'], 'strict', false) . "</textarea>\n"; $out .= '<br /><span class="label">' . Q($this->gettext('vacationsubject')) . '</span><br />' . '<input type="text" name="_action_subject[' . $id . ']" id="action_subject' . $id . '" ' . 'value="' . (is_array($action['subject']) ? Q(implode(', ', $action['subject']), 'strict', false) : $action['subject']) . '" size="35" ' . $this->error_class($id, 'action', 'subject', 'action_subject') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('vacationaddresses')) . '</span><br />' . '<input type="text" name="_action_addresses[' . $id . ']" id="action_addr' . $id . '" ' . 'value="' . (is_array($action['addresses']) ? Q(implode(', ', $action['addresses']), 'strict', false) : $action['addresses']) . '" size="35" ' . $this->error_class($id, 'action', 'addresses', 'action_addr') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('vacationdays')) . '</span><br />' . '<input type="text" name="_action_days[' . $id . ']" id="action_days' . $id . '" ' . 'value="' . Q($action['days'], 'strict', false) . '" size="2" ' . $this->error_class($id, 'action', 'days', 'action_days') . ' />'; $out .= '</div>'; // flags $flags = array('read' => '\\Seen', 'answered' => '\\Answered', 'flagged' => '\\Flagged', 'deleted' => '\\Deleted', 'draft' => '\\Draft'); $flags_target = (array) $action['target']; $out .= '<div id="action_flags' . $id . '" style="display:' . (preg_match('/^(set|add|remove)flag$/', $action['type']) ? 'inline' : 'none') . '"' . $this->error_class($id, 'action', 'flags', 'action_flags') . '>'; foreach ($flags as $fidx => $flag) { $out .= '<input type="checkbox" name="_action_flags[' . $id . '][]" value="' . $flag . '"' . (in_array_nocase($flag, $flags_target) ? 'checked="checked"' : '') . ' />' . Q($this->gettext('flag' . $fidx)) . '<br>'; } $out .= '</div>'; // set variable $set_modifiers = array('lower', 'upper', 'lowerfirst', 'upperfirst', 'quotewildcard', 'length'); $out .= '<div id="action_set' . $id . '" style="display:' . ($action['type'] == 'set' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . Q($this->gettext('setvarname')) . '</span><br />' . '<input type="text" name="_action_varname[' . $id . ']" id="action_varname' . $id . '" ' . 'value="' . Q($action['name']) . '" size="35" ' . $this->error_class($id, 'action', 'name', 'action_varname') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('setvarvalue')) . '</span><br />' . '<input type="text" name="_action_varvalue[' . $id . ']" id="action_varvalue' . $id . '" ' . 'value="' . Q($action['value']) . '" size="35" ' . $this->error_class($id, 'action', 'value', 'action_varvalue') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('setvarmodifiers')) . '</span><br />'; foreach ($set_modifiers as $j => $s_m) { $s_m_id = 'action_varmods' . $id . $s_m; $out .= sprintf('<input type="checkbox" name="_action_varmods[%s][]" value="%s" id="%s"%s />%s<br>', $id, $s_m, $s_m_id, array_key_exists($s_m, (array) $action) && $action[$s_m] ? ' checked="checked"' : '', Q($this->gettext('var' . $s_m))); } $out .= '</div>'; // notify // skip :options tag - not used by the mailto method $out .= '<div id="action_notify' . $id . '" style="display:' . ($action['type'] == 'notify' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . Q($this->gettext('notifyaddress')) . '</span><br />' . '<input type="text" name="_action_notifyaddress[' . $id . ']" id="action_notifyaddress' . $id . '" ' . 'value="' . Q($action['address']) . '" size="35" ' . $this->error_class($id, 'action', 'address', 'action_notifyaddress') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('notifybody')) . '</span><br />' . '<textarea name="_action_notifybody[' . $id . ']" id="action_notifybody' . $id . '" ' . 'rows="3" cols="35" ' . $this->error_class($id, 'action', 'method', 'action_notifybody') . '>' . Q($action['body'], 'strict', false) . "</textarea>\n"; $out .= '<br /><span class="label">' . Q($this->gettext('notifysubject')) . '</span><br />' . '<input type="text" name="_action_notifymessage[' . $id . ']" id="action_notifymessage' . $id . '" ' . 'value="' . Q($action['message']) . '" size="35" ' . $this->error_class($id, 'action', 'message', 'action_notifymessage') . ' />'; $out .= '<br /><span class="label">' . Q($this->gettext('notifyfrom')) . '</span><br />' . '<input type="text" name="_action_notifyfrom[' . $id . ']" id="action_notifyfrom' . $id . '" ' . 'value="' . Q($action['from']) . '" size="35" ' . $this->error_class($id, 'action', 'from', 'action_notifyfrom') . ' />'; $importance_options = array(3 => 'notifyimportancelow', 2 => 'notifyimportancenormal', 1 => 'notifyimportancehigh'); $select_importance = new html_select(array('name' => '_action_notifyimportance[' . $id . ']', 'id' => '_action_notifyimportance' . $id, 'class' => $this->error_class($id, 'action', 'importance', 'action_notifyimportance'))); foreach ($importance_options as $io_v => $io_n) { $select_importance->add(Q($this->gettext($io_n)), $io_v); } $out .= '<br /><span class="label">' . Q($this->gettext('notifyimportance')) . '</span><br />'; $out .= $select_importance->show($action['importance'] ? $action['importance'] : 2); $out .= '</div>'; // mailbox select if ($action['type'] == 'fileinto') { $mailbox = $this->mod_mailbox($action['target'], 'out'); } else { $mailbox = ''; } $select = rcmail_mailbox_select(array('realnames' => false, 'maxlength' => 100, 'id' => 'action_mailbox' . $id, 'name' => "_action_mailbox[{$id}]", 'style' => 'display:' . (!isset($action) || $action['type'] == 'fileinto' ? 'inline' : 'none'))); $out .= $select->show($mailbox); $out .= '</td>'; // add/del buttons $out .= '<td class="rowbuttons">'; $out .= '<a href="#" id="actionadd' . $id . '" title="' . Q($this->gettext('add')) . '" onclick="rcmail.managesieve_actionadd(' . $id . ')" class="button add"></a>'; $out .= '<a href="#" id="actiondel' . $id . '" title="' . Q($this->gettext('del')) . '" onclick="rcmail.managesieve_actiondel(' . $id . ')" class="button del' . ($rows_num < 2 ? ' disabled' : '') . '"></a>'; $out .= '</td>'; $out .= '</tr></table>'; $out .= $div ? "</div>\n" : ''; return $out; }
function action_div($fid, $id, $div = true) { $action = isset($this->form) ? $this->form['actions'][$id] : $this->script[$fid]['actions'][$id]; $rows_num = isset($this->form) ? sizeof($this->form['actions']) : sizeof($this->script[$fid]['actions']); $out = $div ? '<div class="actionrow" id="actionrow' . $id . '">' . "\n" : ''; $out .= '<table><tr><td class="rowactions">'; // action select $select_action = new html_select(array('name' => "_action_type[{$id}]", 'id' => 'action_type' . $id, 'onchange' => 'action_type_select(' . $id . ')')); if (in_array('fileinto', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagemoveto')), 'fileinto'); } if (in_array('fileinto', $this->exts) && in_array('copy', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagecopyto')), 'fileinto_copy'); } $select_action->add(rcube::Q($this->plugin->gettext('messageredirect')), 'redirect'); if (in_array('copy', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagesendcopy')), 'redirect_copy'); } if (in_array('reject', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagediscard')), 'reject'); } else { if (in_array('ereject', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagediscard')), 'ereject'); } } if (in_array('vacation', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('messagereply')), 'vacation'); } $select_action->add(rcube::Q($this->plugin->gettext('messagedelete')), 'discard'); if (in_array('imapflags', $this->exts) || in_array('imap4flags', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('setflags')), 'setflag'); $select_action->add(rcube::Q($this->plugin->gettext('addflags')), 'addflag'); $select_action->add(rcube::Q($this->plugin->gettext('removeflags')), 'removeflag'); } if (in_array('variables', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('setvariable')), 'set'); } if (in_array('enotify', $this->exts) || in_array('notify', $this->exts)) { $select_action->add(rcube::Q($this->plugin->gettext('notify')), 'notify'); } $select_action->add(rcube::Q($this->plugin->gettext('messagekeep')), 'keep'); $select_action->add(rcube::Q($this->plugin->gettext('rulestop')), 'stop'); $select_type = $action['type']; if (in_array($action['type'], array('fileinto', 'redirect')) && $action['copy']) { $select_type .= '_copy'; } $out .= $select_action->show($select_type); $out .= '</td>'; // actions target inputs $out .= '<td class="rowtargets">'; // force domain selection in redirect email input $domains = (array) $this->rc->config->get('managesieve_domains'); if (!empty($domains)) { sort($domains); $domain_select = new html_select(array('name' => "_action_target_domain[{$id}]", 'id' => 'action_target_domain' . $id)); $domain_select->add(array_combine($domains, $domains)); if ($action['type'] == 'redirect') { $parts = explode('@', $action['target']); if (!empty($parts)) { $action['domain'] = array_pop($parts); $action['target'] = implode('@', $parts); } } } // redirect target $out .= '<span id="redirect_target' . $id . '" style="white-space:nowrap;' . ' display:' . ($action['type'] == 'redirect' ? 'inline' : 'none') . '">' . html::tag('input', array('type' => 'text', 'name' => '_action_target[' . $id . ']', 'id' => 'action_target' . $id, 'value' => $action['type'] == 'redirect' ? $action['target'] : '', 'size' => !empty($domains) ? 20 : 35, 'class' => $this->error_class($id, 'action', 'target', 'action_target'))); $out .= !empty($domains) ? ' @ ' . $domain_select->show($action['domain']) : ''; $out .= '</span>'; // (e)reject target $out .= html::tag('textarea', array('name' => '_action_target_area[' . $id . ']', 'id' => 'action_target_area' . $id, 'rows' => 3, 'cols' => 35, 'class' => $this->error_class($id, 'action', 'targetarea', 'action_target_area'), 'style' => 'display:' . (in_array($action['type'], array('reject', 'ereject')) ? 'inline' : 'none')), in_array($action['type'], array('reject', 'ereject')) ? rcube::Q($action['target'], 'strict', false) : ''); // vacation $vsec = in_array('vacation-seconds', $this->exts); $auto_addr = $this->rc->config->get('managesieve_vacation_addresses_init'); $from_addr = $this->rc->config->get('managesieve_vacation_from_init'); if (empty($action)) { if ($auto_addr) { $action['addresses'] = $this->user_emails(); } if ($from_addr) { $default_identity = $this->rc->user->list_emails(true); $action['from'] = $default_identity['email']; } } $out .= '<div id="action_vacation' . $id . '" style="display:' . ($action['type'] == 'vacation' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('vacationreason')) . '</span><br>'; $out .= html::tag('textarea', array('name' => '_action_reason[' . $id . ']', 'id' => 'action_reason' . $id, 'rows' => 3, 'cols' => 35, 'class' => $this->error_class($id, 'action', 'reason', 'action_reason')), rcube::Q($action['reason'], 'strict', false)); $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext('vacationsubject')) . '</span><br>'; $out .= html::tag('input', array('type' => 'text', 'name' => '_action_subject[' . $id . ']', 'id' => 'action_subject' . $id, 'value' => is_array($action['subject']) ? implode(', ', $action['subject']) : $action['subject'], 'size' => 35, 'class' => $this->error_class($id, 'action', 'subject', 'action_subject'))); $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext('vacationfrom')) . '</span><br>'; $out .= html::tag('input', array('type' => 'text', 'name' => '_action_from[' . $id . ']', 'id' => 'action_from' . $id, 'value' => $action['from'], 'size' => 35, 'class' => $this->error_class($id, 'action', 'from', 'action_from'))); $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext('vacationaddr')) . '</span><br>'; $out .= $this->list_input($id, 'action_addresses', $action['addresses'], true, $this->error_class($id, 'action', 'addresses', 'action_addresses'), 30) . html::a(array('href' => '#', 'onclick' => rcmail_output::JS_OBJECT_NAME . ".managesieve_vacation_addresses({$id})"), rcube::Q($this->plugin->gettext('filladdresses'))); $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext($vsec ? 'vacationinterval' : 'vacationdays')) . '</span><br>'; $out .= html::tag('input', array('type' => 'text', 'name' => '_action_interval[' . $id . ']', 'id' => 'action_interval' . $id, 'value' => rcube_sieve_vacation::vacation_interval($action), 'size' => 2, 'class' => $this->error_class($id, 'action', 'interval', 'action_interval'))); if ($vsec) { foreach (array('days', 'seconds') as $unit) { $out .= ' ' . html::label(null, html::tag('input', array('type' => 'radio', 'name' => '_action_interval_type[' . $id . ']', 'value' => $unit, 'checked' => $unit == 'seconds' && isset($action['seconds']) || $unit == 'deys' && !isset($action['seconds']), 'class' => 'radio')) . $this->plugin->gettext($unit)); } } $out .= '</div>'; // flags $flags = array('read' => '\\Seen', 'answered' => '\\Answered', 'flagged' => '\\Flagged', 'deleted' => '\\Deleted', 'draft' => '\\Draft'); $flags_target = (array) $action['target']; $flout = ''; foreach ($flags as $fidx => $flag) { $flout .= html::tag('input', array('type' => 'checkbox', 'name' => '_action_flags[' . $id . '][]', 'value' => $flag, 'checked' => in_array_nocase($flag, $flags_target))) . rcube::Q($this->plugin->gettext('flag' . $fidx)) . '<br>'; } $out .= html::div(array('id' => 'action_flags' . $id, 'style' => 'display:' . (preg_match('/^(set|add|remove)flag$/', $action['type']) ? 'inline' : 'none'), 'class' => $this->error_class($id, 'action', 'flags', 'action_flags')), $flout); // set variable $set_modifiers = array('lower', 'upper', 'lowerfirst', 'upperfirst', 'quotewildcard', 'length'); $out .= '<div id="action_set' . $id . '" style="display:' . ($action['type'] == 'set' ? 'inline' : 'none') . '">'; foreach (array('name', 'value') as $unit) { $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('setvar' . $unit)) . '</span><br>'; $out .= html::tag('input', array('type' => 'text', 'name' => '_action_var' . $unit . '[' . $id . ']', 'id' => 'action_var' . $unit . $id, 'value' => $action[$unit], 'size' => 35, 'class' => $this->error_class($id, 'action', $unit, 'action_var' . $unit))); $out .= '<br>'; } $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('setvarmodifiers')) . '</span>'; foreach ($set_modifiers as $s_m) { $s_m_id = 'action_varmods' . $id . $s_m; $out .= '<br>' . html::tag('input', array('type' => 'checkbox', 'name' => '_action_varmods[' . $id . '][]', 'value' => $s_m, 'id' => $s_m_id, 'checked' => array_key_exists($s_m, (array) $action) && $action[$s_m])) . rcube::Q($this->plugin->gettext('var' . $s_m)); } $out .= '</div>'; // notify $notify_methods = (array) $this->rc->config->get('managesieve_notify_methods'); $importance_options = $this->notify_importance_options; if (empty($notify_methods)) { $notify_methods = $this->notify_methods; } list($method, $target) = explode(':', $action['method'], 2); $method = strtolower($method); if ($method && !in_array($method, $notify_methods)) { $notify_methods[] = $method; } $select_method = new html_select(array('name' => "_action_notifymethod[{$id}]", 'id' => "_action_notifymethod{$id}", 'class' => $this->error_class($id, 'action', 'method', 'action_notifymethod'))); foreach ($notify_methods as $m_n) { $select_method->add(rcube::Q($this->rc->text_exists('managesieve.notifymethod' . $m_n) ? $this->plugin->gettext('managesieve.notifymethod' . $m_n) : $m_n), $m_n); } $select_importance = new html_select(array('name' => "_action_notifyimportance[{$id}]", 'id' => "_action_notifyimportance{$id}", 'class' => $this->error_class($id, 'action', 'importance', 'action_notifyimportance'))); foreach ($importance_options as $io_v => $io_n) { $select_importance->add(rcube::Q($this->plugin->gettext($io_n)), $io_v); } // @TODO: nice UI for mailto: (other methods too) URI parameters $out .= '<div id="action_notify' . $id . '" style="display:' . ($action['type'] == 'notify' ? 'inline' : 'none') . '">'; $out .= '<span class="label">' . rcube::Q($this->plugin->gettext('notifytarget')) . '</span><br>'; $out .= $select_method->show($method); $out .= html::tag('input', array('type' => 'text', 'name' => '_action_notifytarget[' . $id . ']', 'id' => 'action_notifytarget' . $id, 'value' => $target, 'size' => 25, 'class' => $this->error_class($id, 'action', 'target', 'action_notifytarget'))); $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext('notifymessage')) . '</span><br>'; $out .= html::tag('textarea', array('name' => '_action_notifymessage[' . $id . ']', 'id' => 'action_notifymessage' . $id, 'rows' => 3, 'cols' => 35, 'class' => $this->error_class($id, 'action', 'message', 'action_notifymessage')), rcube::Q($action['message'], 'strict', false)); if (in_array('enotify', $this->exts)) { $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext('notifyfrom')) . '</span><br>'; $out .= html::tag('input', array('type' => 'text', 'name' => '_action_notifyfrom[' . $id . ']', 'id' => 'action_notifyfrom' . $id, 'value' => $action['from'], 'size' => 35, 'class' => $this->error_class($id, 'action', 'from', 'action_notifyfrom'))); } $out .= '<br><span class="label">' . rcube::Q($this->plugin->gettext('notifyimportance')) . '</span><br>'; $out .= $select_importance->show($action['importance'] ? (int) $action['importance'] : 2); $out .= '<div id="action_notifyoption_div' . $id . '">' . '<span class="label">' . rcube::Q($this->plugin->gettext('notifyoptions')) . '</span><br>' . $this->list_input($id, 'action_notifyoption', (array) $action['options'], true, $this->error_class($id, 'action', 'options', 'action_notifyoption'), 30) . '</div>'; $out .= '</div>'; // mailbox select if ($action['type'] == 'fileinto') { $mailbox = $this->mod_mailbox($action['target'], 'out'); // make sure non-existing (or unsubscribed) mailbox is listed (#1489956) $additional = array($mailbox); } else { $mailbox = ''; } $select = $this->rc->folder_selector(array('realnames' => false, 'maxlength' => 100, 'id' => 'action_mailbox' . $id, 'name' => "_action_mailbox[{$id}]", 'style' => 'display:' . (empty($action['type']) || $action['type'] == 'fileinto' ? 'inline' : 'none'), 'additional' => $additional)); $out .= $select->show($mailbox); $out .= '</td>'; // add/del buttons $out .= '<td class="rowbuttons">'; $out .= '<a href="#" id="actionadd' . $id . '" title="' . rcube::Q($this->plugin->gettext('add')) . '" onclick="rcmail.managesieve_actionadd(' . $id . ')" class="button add"></a>'; $out .= '<a href="#" id="actiondel' . $id . '" title="' . rcube::Q($this->plugin->gettext('del')) . '" onclick="rcmail.managesieve_actiondel(' . $id . ')" class="button del' . ($rows_num < 2 ? ' disabled' : '') . '"></a>'; $out .= '</td>'; $out .= '</tr></table>'; $out .= $div ? "</div>\n" : ''; return $out; }
/** * Checks the PERMANENTFLAGS capability of the current mailbox * and returns true if the given flag is supported by the IMAP server * * @param string $flag Permanentflag name * @return boolean True if this flag is supported * @access public */ function check_permflag($flag) { $flag = strtoupper($flag); $imap_flag = $this->conn->flags[$flag]; return in_array_nocase($imap_flag, $this->conn->data['PERMANENTFLAGS']); }
/** * REWMOD 01/31/2013 Eric B *456848651351* Reduces comma seperated options into array of single options * useful for making select lists from fields were most rows have multiple options * Can provide DB column to be pulled, or array of items to be reduced * * @global $idx, $db_idx; * @param {String} (conditional) $field column name to pull options from * @param {String} (optional) $extra extra where statement for pulling options * @param {String} (optional) $filter regex to match values. any non matches are filtered out * @param {String} (optional) $delimiter string delimiter for options, predefined as ", " * @param {Array} (conditional) $options existing array of options to be limited * * @return {Array|Bool} Array of options on success, False on failure * */ function reducedOptions($field = null, $extra = null, $filter = null, $delimiter = ', ', $options = array()) { //trying to get away from globals since 4.3 if (class_exists('Util_IDX')) { $idx = Util_IDX::getIdx(); $db_idx = Util_IDX::getDatabase(); } else { global $idx, $db_idx; } if (empty($options) && !empty($field)) { $query = "SELECT DISTINCT `" . $idx->field($field) . "` FROM `" . $idx->getTable() . "`" . (!empty($extra) ? ' WHERE ' . $extra : '') . " ORDER BY `" . $idx->field($field) . "` DESC LIMIT 20;"; if ($result = $db_idx->query($query)) { while ($option = $db_idx->fetchArray($result)) { $options[] = $option[$field]; } } else { return false; } } if (!empty($options)) { $post = array(); $confirmed = array(); foreach ($options as $val) { $pre = explode($delimiter, $val); //confirm and add to array foreach ($pre as $opt) { $opt = preg_replace('/(^\\s+)|(\\s{2,})|(\\s+$)|(\\n)|(\\r)/', ' ', $opt); //trim and remove exessive spacing if (!in_array_nocase($opt, $confirmed) && !empty($opt)) { if (!empty($filter)) { if (preg_match($filter, $opt)) { $confirmed[] = $opt; } } else { $confirmed[] = $opt; } } } } //sort them if (!empty($confirmed)) { asort($confirmed); foreach ($confirmed as $opt) { $post[] = array('value' => $opt, 'title' => ucwords(strtolower($opt))); } } return $post; } else { return false; } }
$messages .= "Sorry but this image size is " . $imageurlsize_mb . " MB which is bigger than the max allowed file size of " . $max_file_size_mb . " MB."; $err = "1"; } } // save the file, if no error messages if ($err == "0") { // SAVE THE PICTURE $newFileName = newImageName($thefile); $FileName .= "|" . newImageName($thefile); $FileFile .= "|" . $server_dir . $newFileName; $newFile = $server_dir . $newFileName; $newFileUrl = $url . $newFileName; $FileUrl .= "|" . $url . $newFileName; $newFileUrlLink = $server_save_directory . $newFileName; $FileUrlLink .= "|" . $newFileName; if (in_array_nocase($file_ext, $valid_file_ext)) { $lx = 3; if ($file_ext == "jpeg") { $lx = 4; } $tnFileName = substr($newFileName, 0, strlen($newFileName) - $lx) . "jpg"; $tnFileName = str_replace('.', '_tn.', $tnFileName); $tnFile = $server_dir . $tnFileName; $FiletnUrl .= "|" . $url . $tnFileName; $tnFileUrl = $url . $tnFileName; } else { $tnFileName = ""; $tnFile = ""; $tnFileUrl = ""; } $newID = "";
/** * Return html for a flat list <select> for the mailbox tree */ public function render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames = false, $nestLevel = 0, $opts = array()) { $out = ''; foreach ($arrFolders as $folder) { // skip exceptions (and its subfolders) if (!empty($opts['exceptions']) && in_array($folder['id'], $opts['exceptions'])) { continue; } // skip folders in which it isn't possible to create subfolders if (!empty($opts['skip_noinferiors'])) { $attrs = $this->storage->folder_attributes($folder['id']); if ($attrs && in_array_nocase('\\Noinferiors', $attrs)) { continue; } } if (!$realnames && ($folder_class = $this->folder_classname($folder['id']))) { $foldername = $this->gettext($folder_class); } else { $foldername = $folder['name']; // shorten the folder name to a given length if ($maxlength && $maxlength > 1) { $foldername = abbreviate_string($foldername, $maxlength); } } $select->add(str_repeat(' ', $nestLevel * 4) . html::quote($foldername), $folder['id']); if (!empty($folder['folders'])) { $out .= $this->render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, $select, $realnames, $nestLevel + 1, $opts); } } return $out; }
//echo "ok:$picName<p>"; } else { //echo "n-ok:$picName<p>"; } } $thumbsList = getUserFiles($prefix, $thumbsDir); foreach ($filesList as $fileArray) { $fileThumbnails = array (); $filename = $fileArray[0]; $lastModified = $fileArray[1]; $picName = substr($filename, 0, strrpos($filename, ".")); $ext = substr($filename, strrpos($filename, ".") + 1); if (in_array_nocase($ext, $valid_picture_extensions)) { foreach ($thumbsList as $thumbsArray) { $thumbname = $thumbsArray[0]; $isThumbnail = (strstr($thumbname, $picName . "_") == $thumbname); if ($isThumbnail) { $fileThumbnails[] = $thumbname; } } asort($fileThumbnails); $fullList[] = array ( $lastModified, $filename, $fileThumbnails ); } else {