コード例 #1
0
 public function __construct(array $urlParams = [])
 {
     // Static saved the application name
     $appName = Helper::setAppName('owncollab_talks');
     parent::__construct($appName, $urlParams);
     $container = $this->getContainer();
     /**
      * Checks the configuration file, if it does not match the server parameters,
      * updates the configuration file
      */
     $container->registerService('Configurator', function (IAppContainer $c) use($appName) {
         $configurator = new Configurator();
         $this->updateConfig($configurator);
         return $configurator;
     });
     /**
      * Core for application registers service
      */
     $container->registerService('UserId', function (IContainer $c) {
         /** @var \OC\Server $server */
         /** @var \OCP\IUser  $user */
         $server = $c->query('ServerContainer');
         $user = $server->getUserSession()->getUser();
         return $user ? $user->getUID() : '';
     });
     $container->registerService('isAdmin', function (DIContainer $c) {
         /** @var \OC\Server $server */
         /** @var \OCP\IUser  $user */
         $server = $c->query('ServerContainer');
         $user = $server->getUserSession()->getUser();
         if ($user) {
             return $c->getServer()->getGroupManager()->isAdmin($user->getUID());
         } else {
             return false;
         }
     });
     $container->registerService('L10N', function (IAppContainer $c) use($appName) {
         return $c->getServer()->getL10N($appName);
     });
     /**
      * Database Layer
      */
     $container->registerService('Connect', function (DIContainer $c) {
         return new Connect(\OC::$server->getDatabaseConnection());
     });
     /**
      * Controllers
      */
     $container->registerService('ApiController', function (DIContainer $c) {
         return new ApiController($c->query('AppName'), $c->query('Request'), $c->query('UserId'), $c->query('isAdmin'), $c->query('L10N'), $c->query('Connect'), $c->query('Configurator'));
     });
     $container->registerService('MainController', function (DIContainer $c) {
         return new MainController($c->query('AppName'), $c->query('Request'), $c->query('UserId'), $c->query('isAdmin'), $c->query('L10N'), $c->query('Connect'), $c->query('Configurator'));
     });
 }
コード例 #2
0
 /**
  * MainController constructor.
  */
 public function __construct($userid)
 {
     $this->connect = new Connect(Helper::getConnection());
     $this->Messages = $this->connect->messages();
     $this->Users = $this->connect->users();
     $this->Files = $this->connect->files();
     $this->userId = $userid;
     $this->datadir = $_SERVER['DOCUMENT_ROOT'] . "/data";
     $this->readTmpDir('tmp');
     if (!empty($this->filesList)) {
         $this->readFiles();
     }
     if (!empty($this->sharedList)) {
         $this->addFilesToMessage();
     }
 }
コード例 #3
0
ファイル: aliaser.php プロジェクト: raceface2nd/owncollab
 /**
  * [GROUP_ID]-group@[MAIL_HOST_NAME] (Example: "*****@*****.**")
  * @param $gid
  */
 public function onPreCreateGroup($gid)
 {
     if (!empty($gid)) {
         $prefix = $this->configurator->get('group_prefix');
         $email = $this->encodeUidToEmail($gid . $prefix);
         $result = $this->mtaConnector->insertVirtualUser($email, 'pass' . strtolower($gid));
         if (!$result) {
             $errorMessage = 'Error adding user data in the MTA database, ';
             if ($result === false) {
                 $errorMessage .= 'the domain specified in the configuration can not be found';
             } else {
                 $errorMessage .= 'possible SQL query error';
             }
             Helper::mailParserLogerError($errorMessage);
         } else {
             Helper::mailParserLoger('Added new virtual user: ' . $email);
         }
     }
 }
コード例 #4
0
 /**
  * @param array $message
  * @param array $subscribers
  * Send the message to each user
  * in subscribers list
  */
 public function sendMessage($message, $subscribers, $from = '', $messagedata = NULL)
 {
     //if (!is_array($subscribers) && is_string($subscribers)) {
     //	$subscribers = explode(',', $subscribers);
     //}
     $um = $this->connect->userMessage();
     $users = $this->connect->users();
     //$isgroup = $users->isGroupSelected($subscribers);
     foreach ($subscribers as $s => $subscriber) {
         if (is_string($s) && !empty($s)) {
             $data = ['uid' => $s, 'mid' => $message, 'status' => 0];
             $um->save($data);
         }
     }
     if (!empty($messagedata)) {
         foreach ($subscribers as $s => $subscriber) {
             $sent = Helper::messageSend($subscriber, $from, $messagedata, $this->getProjectName(), true);
         }
     }
     return $sent;
 }
コード例 #5
0
        ?>
</span>
                </span>
                        <span currentuploads="0" class="uploadtext"></span>
                    </a>
                    <?php 
        if ($file['mimetype'] == 2) {
            // If folder
            ?>
                        <div id="folder-files"></div>
                    <?php 
        }
        ?>
                </td>
                <td style="color:rgb(160,160,160); text-align:right;" class="filesize"><?php 
        echo \OCA\Owncollab_Talks\Helper::sizeRoundedString($file['size']);
        ?>
</td>
                <td class="date">
                    <span data-original-title="<?php 
        echo date('F d, Y h:i A', $file['mtime']);
        ?>
" style="color:rgb(51,51,51)" title="" class="modified"><?php 
        p($l->t($modified['key'], $modified['value']));
        ?>
</span>
                </td>
            </tr>
        <?php 
    }
    ?>
コード例 #6
0
/read/<?php 
            echo $talk['id'];
            ?>
"><?php 
            echo $talk['title'];
            ?>
</a></div>
				<div class="talk-author">started from <?php 
            echo $startedfrom;
            ?>
 on <?php 
            echo date("d.m.Y H:i", strtotime($talk['date']));
            ?>
</div>
				<div class="talk-preview"><?php 
            echo \OCA\Owncollab_Talks\Helper::firstWords($talk['text'], 10);
            ?>
</div>
				<div class="talk-answers">
				<?php 
            foreach ($_['answers'] as $a => $answer) {
                ?>
					<div class="talk-author">user <?php 
                echo $answer['author'];
                ?>
 answered on <?php 
                echo date("d.m.Y H:i", strtotime($answer['date']));
                ?>
</div>
					<div class="talk-title"><a href="/index.php/apps/<?php 
                echo $_['appname'];
コード例 #7
0
 /**
  * Share selected files with selected users
  */
 public function shareFiles()
 {
     $this->prepareUsersForShare();
     $files = array();
     foreach ($this->files as $id) {
         $files[] = $file = $this->files->getById($id)[0];
         $fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
         $sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
         $sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
         foreach ($this->subscriberToShare as $userid) {
             if (isset($file['fileid']) && is_array($file) && !in_array($userid, $sharedWith) && !($userid == $this->author) && ($fileOwner == $this->author || $file['permissions'] >= 16)) {
                 \OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
             }
         }
     }
     $this->forSend['messagedata']['attachlinks'] = Helper::makeAttachLinks($this->files, $files);
 }
コード例 #8
0
 /**
  * @NoAdminRequired
  * @NoCSRFRequired
  * @return TemplateResponse
  */
 public function read($id)
 {
     $attachements_info = [];
     $message = $this->connect->messages()->getById((int) $id);
     $parent = $this->connect->messages()->getById((int) $message['rid']);
     if (!empty($message['attachements'])) {
         $attach = [];
         try {
             $attach = json_decode($message['attachements'], true);
         } catch (\Exception $e) {
             var_dump('Exception: ' . $e->getMessage());
         }
         foreach ($attach as $at) {
             $file = $this->connect->files()->getInfoById($at);
             $fileInfo = false;
             $filePath = str_replace('files/', '', $file['path']);
             try {
                 $fileInfo = \OC\Files\Filesystem::getFileInfo($filePath);
             } catch (\Exception $e) {
             }
             //var_dump($file);
             if (!$fileInfo) {
                 $itemSource = \OCP\Share::getItemSharedWithBySource('file', $at);
                 if (is_array($itemSource) && !empty($itemSource)) {
                     $fileInfo = \OC\Files\Filesystem::getFileInfo($itemSource['file_target']);
                     $filePath = $itemSource['file_target'];
                 }
             }
             if (!$fileInfo) {
                 continue;
             }
             $icon = '/core/img/filetypes/image.svg';
             // \OCA\Files\Helper::determineIcon($fileInfo);
             $attachements_info[] = ['preview' => $icon, 'link' => "/remote.php/webdav/{$filePath}", 'file' => $file, 'info' => \OCA\Files\Helper::formatFileInfo($fileInfo)];
         }
     }
     Helper::cookies('goto_message', $message['rid'] == 0 ? $message['id'] : $parent['id'], 0, '/');
     $data = ['menu' => 'all', 'content' => 'read', 'message' => $message, 'parent' => $parent, 'attachements_info' => $attachements_info];
     return new TemplateResponse($this->appName, 'main', $data);
 }
コード例 #9
0
ファイル: app.php プロジェクト: bogolubov/owncollab_talks-1
    $l = \OC::$server->getL10N('owncollab_talks');
    return ['id' => $appName, 'order' => 10, 'href' => $urlGenerator->linkToRoute($appName . '.main.index'), 'icon' => $urlGenerator->imagePath($appName, 'app.svg'), 'name' => $l->t('Talks')];
});
/**
 * Loading translations
 * The string has to match the app's folder name
 */
Util::addTranslations($appName);
/**
 * Common styles and scripts
 */
if (Helper::isAppPage($appName)) {
    Util::addStyle($appName, 'common');
    Util::addScript($appName, 'inc');
    Util::addScript($appName, 'application');
}
/**
 * Detect and appoints styles and scripts for particular app page
 */
$currentUri = Helper::getCurrentUri($appName);
if ($currentUri == '/') {
}
/**
* Set timezone to 'Berlin' 
* It must be set in the ownCloud config 
*/
date_default_timezone_set('Europe/Berlin');
/**
 * Checking and saving the files send by email
 */
//$checkFiles = new TempFiles();
コード例 #10
0
 /**
  * Share selected files with selected users
  */
 public function shareFiles()
 {
     $this->prepareUsersForShare();
     $files = array();
     foreach ($this->files as $id) {
         $file = $this->Files->getById($id)[0];
         $fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
         $sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
         $sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
         $isenabled = \OCP\Share::isEnabled();
         $isallowed = \OCP\Share::isResharingAllowed();
         foreach ($this->subscriberToShare as $userid) {
             if (isset($file['fileid']) && is_array($file) && !in_array($userid, $sharedWith) && !($userid == $this->author) && ($fileOwner == $this->author || $file['permissions'] >= 16) && $isenabled && $isallowed) {
                 //try {
                 \OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
                 $files[] = $file['fileid'];
                 //}
                 //catch (\Exception $e) {
                 //	echo $e->getMessage();
                 //}
             }
         }
     }
     $this->forSaveData['attachements'] = $files;
     $this->fileLinks = Helper::makeAttachLinks($files, $this->Files);
     //print_r($this->fileLinks);
     //file_put_contents('/tmp/inb.log', "\n\nfileLinks : "print_r($this->fileLinks, true)."\n", FILE_APPEND);
     /* foreach ($_POST['select-files'] as $id => $on) {
     			if ($on == 'on') {
     				$file = $files->getById($id)[0];
     				$fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
     				$sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
     				$sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
     				foreach ($allusers as $userid => $user) {
     					if (isset($file['fileid']) && is_array($file) && isset($file['fileid']) && !in_array($userid, $sharedWith) && !($userid == $this->userId)) {
     						//Helper::shareFile($file['name'], $user, $userid);
     						\OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
     						$filesid[] = $id;
     					}
     				}
     			}
     		} */
 }
コード例 #11
0
</div>

<?php 
if ($children) {
    ?>

    <div id="messages_children">
        <?php 
    foreach ($children as $child) {
        ?>
            <div class="item_msg linker" data-id="toreadmsg" data-link="<?php 
        echo $child['id'];
        ?>
">
                <div class="msg_title"><a href="<?php 
        echo Helper::linkToRoute('owncollab_talks.main.read', ['id' => $child['id']]);
        ?>
"><?php 
        p($child['title']);
        ?>
</a></div>
                <div class="msg_desc"><?php 
        echo $child['author'];
        ?>
 <?php 
        p(date("d.m.Y H:i:s", strtotime($child['date'])));
        ?>
</div>
                <div class="msg_text"><?php 
        p(substr(strip_tags(htmlspecialchars_decode($child['text'])), 0, 50));
        ?>
コード例 #12
0
ファイル: app.php プロジェクト: Werdffelynir/owncollab_talks
        Helper::mailParserLogerError($mtaErrors);
    } else {
        $aliaser = new Aliaser($appName, $configurator, $mta);
        // Sync MailServer virtual users with OwnCloud users
        $connect = new Connect(\OC::$server->getDatabaseConnection());
        $users = [];
        $usersArr = $connect->users()->getAll();
        foreach ($usersArr as $ua) {
            $users[] = strtolower($ua['uid']);
        }
        $groups = [];
        $groupsArr = $connect->users()->getAllGroups();
        foreach ($groupsArr as $ga) {
            $groups[] = strtolower($ga['gid']);
        }
        $aliaser->syncVirtualAliasesWithUsers($users, $groups);
    }
}
/**
 * Loading translations
 * The string has to match the app's folder name
 */
Util::addTranslations($appName);
/**
 * Common styles and scripts
 */
if (Helper::isAppPage($appName)) {
    Util::addStyle($appName, 'common');
    Util::addScript($appName, 'libs/ns.application');
    Util::addScript($appName, 'application/init');
}
コード例 #13
0
 private function parserFileHandler($files, $userForSharing)
 {
     $saveFiles = ['file_fileid' => [], 'shared_with' => []];
     if ($this->loginVirtualUser()) {
         $innerDir = date("Ymd", time());
         foreach ($files as $file) {
             if (!\OC\Files\Filesystem::is_dir('/Talks')) {
                 \OC\Files\Filesystem::mkdir('/Talks');
             }
             if (!\OC\Files\Filesystem::is_dir('/Talks/' . $innerDir)) {
                 \OC\Files\Filesystem::mkdir('/Talks/' . $innerDir);
             }
             if (is_file($file['tmpfile'])) {
                 try {
                     chmod($file['tmpfile'], 0755);
                 } catch (\Exception $e) {
                 }
                 $filePathTo = '/Talks/' . $innerDir . '/' . $file['filename'];
                 $fileInfoExist = \OC\Files\Filesystem::getFileInfo($filePathTo, false);
                 if ($fileInfoExist) {
                     $filePathTo = '/Talks/' . $innerDir . '/' . time() . '-' . $file['filename'];
                 }
                 $saved = \OC\Files\Filesystem::file_put_contents($filePathTo, file_get_contents($file['tmpfile']));
                 if ($saved) {
                     unlink($file['tmpfile']);
                     $saveFilesInfo = \OC\Files\Filesystem::getFileInfo($filePathTo);
                     Helper::mailParserLoger('FILES INFO: ' . json_encode($saveFilesInfo));
                     $saveFiles['file_fileid'][] = $saveFilesInfo['fileid'];
                     $saveFiles['shared_with'][] = $this->shareFileToUsers($saveFilesInfo, $userForSharing);
                     //todo mails sands
                 }
             }
         }
     }
     return $saveFiles;
 }
コード例 #14
0
    ?>
    <?php 
}
?>
    <tfoot>
    <tr class="summary" style="height: 50px;">
        <td>
            <span class="info">
                <span class="dirinfo"><?php 
p($l->t('%s folders', $countfolders));
?>
</span>
                <span class="connector"> <?php 
p($l->t('and'));
?>
 </span>
                <span class="fileinfo"><?php 
p($l->t('%s files', $countfiles));
?>
</span>
                <span class="filter hidden"></span>
            </span>
        </td>
        <td class="filesize" style="text-align:right;"><?php 
echo \OCA\Owncollab_Talks\Helper::sizeRoundedString($totalsize);
?>
</td>
        <td class="date"></td>
    </tr>
    </tfoot>
</table>
コード例 #15
0
<?php

if (!empty($_['talk'])) {
    $id = $_['talk']['id'];
    $messageid = $_['talk']['mid'];
    $title = "Re:" . $_['talk']['title'];
    $text = \OCA\Owncollab_Talks\Helper::generateRepliedText($_['talk']['text'], $_['talk']['author'], date("D, d M Y H:i:s", strtotime($_['talk']['date'])));
    //TODO: Написати функцію обробки вхідного тексту
    $selectedsubscribers = explode(',', $_['talk']['subscribers']);
    if (!($_['talk']['author'] == $_['user'])) {
        $selectedsubscribers[] = $_['talk']['author'];
    }
    $userstatus = $_['userstatus'];
}
$cancheckusers = $_['user'] == $_['talk']['author'] || in_array($_['user'], array_column($_['subscribers']['Managers'], 'uid')) ? true : false;
?>

<div class="begin-talk">
    <form action="/index.php/apps/owncollab_talks/send" method="post" id="begin-talk" enctype="multipart/form-data">

    <div class="left"><h2>
        <span data-original-title="Start s Talk" class="has-tooltip" title=""><?php 
p($l->t('Start a Talk'));
?>
</span>
    </h2></div>
    <div class="right claer"><input type="submit" value="Submit"></div>
    <div class="talk-title">
        <input type="text" name="title" value="<?php 
echo $title;
?>
コード例 #16
0
 /**
  * @param array $message
  * @param array $subscribers
  * Send the message to each user
  * in subscribers list
  */
 public function sendMessage($message, $subscribers, $from = '', $messagedata = NULL)
 {
     $um = $this->connect->userMessage();
     $users = $this->connect->users();
     //$isgroup = $users->isGroupSelected($subscribers);
     //$groups = $messagedata['groupsid'];
     foreach ($subscribers as $s => $subscriber) {
         if (is_string($s) && !empty($s)) {
             $data = ['uid' => $s, 'mid' => $message, 'status' => 0];
             $um->save($data);
         }
     }
     //print_r($messagedata);
     if (!empty($messagedata)) {
         foreach ($subscribers as $s => $subscriber) {
             $sent = Helper::messageSend($subscriber, $from, $messagedata, $this->getProjectName());
         }
     }
 }
コード例 #17
0
 public function syncVirtualAliasesWithUsers(array $users, array $groups)
 {
     $deleteVirtualUsersIds = [];
     $virtualUsers = $this->mtaConnector->getCurrentVirtualUsers(false);
     $groupPrefix = $this->configurator->get('group_prefix');
     $groupPrefixLength = strlen($groupPrefix);
     // delete fake user
     unset($users[array_search($this->configurator->get('collab_user'), $users)]);
     foreach ($virtualUsers as $virtualUser) {
         $vUid = explode('@', $virtualUser['email'])[0];
         // -group
         if (strlen($vUid) > $groupPrefixLength && substr($vUid, -$groupPrefixLength) === $groupPrefix) {
             $gvUid = substr($vUid, 0, -$groupPrefixLength);
             if (!in_array($gvUid, $groups)) {
                 $deleteVirtualUsersIds[] = $virtualUser['id'];
             } else {
                 unset($groups[array_search($gvUid, $groups)]);
             }
         } else {
             if (!in_array($vUid, $users)) {
                 $deleteVirtualUsersIds[] = $virtualUser['id'];
             } else {
                 unset($users[array_search($vUid, $users)]);
             }
         }
     }
     // Delete virtual_users . var_dump('Delete: ', $deleteVirtualUsersIds);
     if (!empty($deleteVirtualUsersIds)) {
         $deleteVirtualUsersIdsStr = join(',', $deleteVirtualUsersIds);
         $result = $this->mtaConnector->deleteVirtualUserIn($deleteVirtualUsersIdsStr);
         if ($result) {
             Helper::mailParserLoger('Deleted virtual user id: ' . $deleteVirtualUsersIdsStr);
         }
     }
     // Add new virtual_users Users . var_dump('Add users:', $users);
     if (!empty($users)) {
         foreach ($users as $user) {
             $this->onPreCreateUser($user, Helper::randomString(8));
         }
     }
     // Add new virtual_users Groups . var_dump('Add groups:', $groups);
     if (!empty($groups)) {
         foreach ($groups as $group) {
             $this->onPreCreateGroup($group);
         }
     }
 }