mirror of
				https://bitbucket.org/jsuto/piler.git
				synced 2025-10-30 18:42:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			129 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| define('EMAIL_STR', 'email');
 | |
| 
 | |
| ini_set("session.save_path", "/tmp");
 | |
| 
 | |
| $webuidir = "";
 | |
| $email = "";
 | |
| $daemonize = 0;
 | |
| 
 | |
| 
 | |
| $opts = 'hd::';
 | |
| $lopts = array(
 | |
|                 'webui:',
 | |
|                 'email:'
 | |
|               );
 | |
| 
 | |
| 
 | |
| if($options = getopt($opts, $lopts)) {
 | |
| 
 | |
|    if(isset($options['webui'])) {
 | |
|        $webuidir = $options['webui'];
 | |
|    }
 | |
|    else {
 | |
|       echo "\nError: must provide path to WebUI directory\n\n";
 | |
|       exit;
 | |
|    }
 | |
| 
 | |
|    if(isset($options['d']))  {
 | |
|       $daemonize = 1;
 | |
|    }
 | |
| 
 | |
|    if(isset($options[EMAIL_STR])) {
 | |
|       $email = $options[EMAIL_STR];
 | |
|    }
 | |
| 
 | |
| }
 | |
| else {
 | |
|     display_help();
 | |
|     exit;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| require_once($webuidir . "/config.php");
 | |
| 
 | |
| require(DIR_SYSTEM . "/startup.php");
 | |
| 
 | |
| require_once 'Zend/Mail/Protocol/Imap.php';
 | |
| require_once 'Zend/Mail/Storage/Imap.php';
 | |
| 
 | |
| $request = new Request();
 | |
| Registry::set("request", $request);
 | |
| 
 | |
| 
 | |
| Registry::set('document', new Document());
 | |
| 
 | |
| 
 | |
| $loader = new Loader();
 | |
| Registry::set('load', $loader);
 | |
| 
 | |
| 
 | |
| $language = new Language();
 | |
| Registry::set('language', $language);
 | |
| 
 | |
| 
 | |
| $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PREFIX);
 | |
| Registry::set('DB_DATABASE', DB_DATABASE);
 | |
| 
 | |
| Registry::set('db', $db);
 | |
| 
 | |
| Registry::set('DB_DRIVER', DB_DRIVER);
 | |
| 
 | |
| 
 | |
| $loader->model('user/google');
 | |
| $loader->model('google/google');
 | |
| 
 | |
| openlog("piler-gmail-import", LOG_PID, LOG_MAIL);
 | |
| 
 | |
| if($daemonize == 1) {
 | |
|    while(1) {
 | |
|       syslog(LOG_INFO, "started another imap poll");
 | |
| 
 | |
|       poll_imap_accounts();
 | |
| 
 | |
|       sleep(300);
 | |
|    }
 | |
| }
 | |
| else {
 | |
|    poll_imap_accounts($email);
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| function poll_imap_accounts($email = '') {
 | |
|    $db = Registry::get('db');
 | |
| 
 | |
|    $ug = new ModelUserGoogle();
 | |
|    $g = new ModelGoogleGoogle();
 | |
| 
 | |
| 
 | |
|    if($email) {
 | |
|       $query = $db->query("SELECT email FROM " . TABLE_GOOGLE . " WHERE email=?", array($email));
 | |
|    } else {
 | |
|       $query = $db->query("SELECT email FROM " . TABLE_GOOGLE);
 | |
|    }
 | |
| 
 | |
|    if(isset($query->rows)) {
 | |
|       foreach($query->rows as $q) {
 | |
|          $access_token = $ug->refresh_access_token($q[EMAIL_STR]);
 | |
|          $g->download_users_emails($q[EMAIL_STR], $access_token);
 | |
|       }
 | |
|    }
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| function display_help() {
 | |
|     $phpself = basename(__FILE__);
 | |
|     echo "\nUsage: $phpself --webui [PATH] [OPTIONS...]\n\n";
 | |
|     echo "\t--webui=\"[REQUIRED: path to the Piler WebUI Directory]\"\n\n";
 | |
|     echo "options:\n";
 | |
|     echo "\t--email: Email address to poll. Leave it empty to poll all email addresses\n";
 | |
|     echo "\t-d:      Daemonize the imap polling\n";
 | |
|     echo "\t-h:      Prints this help screen and exits\n";
 | |
| }
 |